Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Вопрос про каунтеры или счётчики  [new]
Ort84
Member

Откуда: Украина, Донецк
Сообщений: 569
ds.Close забыл :)
31 окт 05, 17:27    [2024455]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Guest0
Guest
Вопрос чайника:
Как модуль вызывать (из запроса)? :)
1 ноя 05, 18:18    [2028580]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Ort84
Member

Откуда: Украина, Донецк
Сообщений: 569
Guest0
Вопрос чайника:
Как модуль вызывать (из запроса)? :)


То бишь функцию?

SELECT Поле1, MyFunc(Поле1)
FROM Таблица

MyFunc - функция, описанная в модуле.
1 ноя 05, 18:28    [2028610]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Guest0
Guest
То есть, для вызова какой-либо написанной вами функции нужно:

1) открыть в акцессе вкладку модули
2) записать текст, предложенный вами
3) использовать sql-запрос
SELECT Поле1, MyFunc(Поле1)
FROM Таблица

где MyFunc - функция, допустим MyCount, как это предложил Ort84

Всё правильно?

ЗЫ: А что значит Поле1? :)
16 ноя 05, 15:57    [2075360]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Ort84
Member

Откуда: Украина, Донецк
Сообщений: 569
Guest0
То есть, для вызова какой-либо написанной вами функции нужно:

1) открыть в акцессе вкладку модули
2) записать текст, предложенный вами
3) использовать sql-запрос
SELECT Поле1, MyFunc(Поле1)
FROM Таблица

где MyFunc - функция, допустим MyCount, как это предложил Ort84

Всё правильно?

ЗЫ: А что значит Поле1? :)


[Поле1] - любое поле таблицы - очень часто функции в запросе используют для подсчета для определенной записи некоторого значения, и чтобы функция поняла какой записи считать - дают как аргумент поле этой записи (чаще ее id).
16 ноя 05, 19:43    [2076302]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Guest0
Guest
СОздаю модуль, вставляю туда текст Ort84
и пишу в запросе:
SELECT [Номер - спуск], MyCount([Номер - спуск])
FROM Таблица

вызываю запрос, пишет нечто типа: 'Неизвестная функция MyCount'
21 ноя 05, 16:53    [2091155]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
Guest0
пишет нечто типа: 'Неизвестная функция MyCount'
Текст вашей функции MyCount можно увидеть здесь?
21 ноя 05, 17:20    [2091303]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Guest0
Guest
Текст такой же, какой предложил Ort84
23 ноя 05, 14:19    [2099349]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
Если вы хотите в текстах запросов использовать свою функцию, она должна быть описана как Public в общем модуле (не в модуле класса) текущего приложения.
23 ноя 05, 14:33    [2099439]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Alexanderpa
Guest
Если можно, поподробнее, как это
23 ноя 05, 18:01    [2100761]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
Alexanderpa
Если можно, поподробнее, как это
У вас есть база данных. Вы сделали в ней запрос, который использует вызов функции MyCount(). Чтобы этот запрос работал, необходимо, чтобы в вашей базе была написана сама эта функция.

Вы говорите, что у вас она написана - в том виде как предложил Ort84. Стало быть, у вас есть модуль, в котором написали текст этой функции. В VBA модули бывают двух видов - общие модули и модули классов. Дальше вот:
Karfaqen
Если вы хотите в текстах запросов использовать свою функцию, она должна быть описана как Public в общем модуле (не в модуле класса)
Если при запуске запроса, вы получаете сообщение типа: 'Неизвестная функция MyCount', то это может означать одно из нижеследующего:

1) функции с таким именем у вас нет вообще
2) функция с таким именем есть, но она написана не в общем модуле
3) функция с таким именем есть в общем модуле, но она описана не как Public

Смотрите.
24 ноя 05, 10:09    [2102269]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Alfox
Member

Откуда:
Сообщений: 1
Подскажите, как обнулить поле счетчик - пока отлаживал базу, значение счетчика дошло до 120, теперь перед заполнением хочется обнулить.
24 ноя 05, 19:59    [2106152]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Темный
Member

Откуда:
Сообщений: 11941
Alfox
Подскажите, как обнулить поле счетчик - пока отлаживал базу, значение счетчика дошло до 120, теперь перед заполнением хочется обнулить.

https://www.sql.ru/faq/faq_topic.aspx?fid=214
Q2-A2
24 ноя 05, 21:48    [2106330]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Guest0
Guest
Как сделать модуль общим и где находится модуль Public?
25 ноя 05, 19:15    [2110891]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Karfaqen
Member

Откуда:
Сообщений: 7010
Guest0
Как сделать модуль общим
Его надо таким создать. Создается новый общий модуль так: находясь в окне базы данных, на вкладке "Модули" нажать кнопку "Создать".

Guest0
где находится модуль Public?
Речь шла об описании функции (инструкция Function). Там необязательный элемент Public указывает, что процедура доступна для всех других процедур во всех модулях (в отличие, скажем от Private).

Например, если вы описываете в общем модуле две функции:
Public Function MyCount()
Private Function MyCount2()
то MyCount вы можете использовать в запросах, а MyCount2 - нет.
25 ноя 05, 20:51    [2111151]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
guest0
Guest
Ort84, т.е. для твоего примера нужно создавать дополнительную таблицу?
29 ноя 05, 15:07    [2120997]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Guest0
Guest
Ответьте кто-нибудь, что вообще нужно сделать перед использованием функции, написанной Ort84?
А то она чего-то не работает. Может я что-то неправильно сделал?
30 ноя 05, 16:55    [2127030]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
guest0
Ort84, т.е. для твоего примера нужно создавать дополнительную таблицу?

Ort84 отвечал на вопрос, как из запроса обратиться к функции. То есть в предположении, что сами запрос и функция уже имеются. Если запроса нет, то надо его построить. Если нет функции, то надо ее написать. Чтобы запрос работал, он должен сидеть на какой-то таблице. На какой таблице, какой запрос и какая функция - зависит от задачи. Если в задаче нет таблиц и не нужны запросы, то ответ Ort84 для этой задачи не предназначен.
30 ноя 05, 20:04    [2128256]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Ort84
Member

Откуда: Украина, Донецк
Сообщений: 569
guest0
Ort84, т.е. для твоего примера нужно создавать дополнительную таблицу?


Если в твоей задаче необходимо в итоге получить отсортированные(случай, когда id записей идет не по возрастанию) и пронумерованные по порядку записи, и ты хочешь использовать мой вариант, то тебе нужно создавать таблицу Таб(Доп) - там будет содержаться результат.
1 дек 05, 16:40    [2131961]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Alexanderpa
Guest
Моя проблема заключается в том, что у меня не получается вызвать функцию из запроса.
1 дек 05, 18:10    [2132584]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Ort84
Member

Откуда: Украина, Донецк
Сообщений: 569
Alexanderpa
Моя проблема заключается в том, что у меня не получается вызвать функцию из запроса.


Попробуй написать простую функцию:

Function MyFunc(str As Variant) As String
MyFunc=Nz(str," ")
End Function

В VB создай модуль (или используй старый, если есть) и запиши туда этот код.
Потом выбери любую свою таблицу, где есть текстовое поле и создай на ее основе запрос:
SELECT [ТекстовоеПоле], MyFunc([ТекстовоеПоле])
FROM ТвояТаблица

Что непонятно?
Пиши, если что - не стесняйся...
1 дек 05, 18:51    [2132781]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Guest0
Guest
Всё нормально. Добавил таблицу, там два поля (ТекстовоеПоле и ааа)
Добавил три строки.
В итоге после запуска запроса мне показали два столбика: 1) ТекстовоеПоле 2) Expr1001. В столбике Expr1001 данные совпадали с данными в столбце ТекстовоеПоле.

Почему же не работает твой первый запрос?
Возможно, я просто делаю что-то не так.
Мне непонятно там:
1) Что нужно подставить вместо данных str1
 str1 = "SELECT Код, Текст FROM Таб1 ORDER BY Текст"
 rst.Open str1, dbs, 1
 str1 = "SELECT Код, №пп,Текст FROM [Таб(Доп)]"
2) И что мне нужно подставить вместо:
   ![№пп] = i
   ![Текст] = rst![Текст]
Остальное, я так понимаю, менять не надо.
Заранее спасибо за ответ.
3 дек 05, 14:48    [2138249]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Guest0
Guest
Прошу помощи, Ort84. ;)
И другие помогите чем можете, пожалуйста.
4 дек 05, 14:43    [2139268]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Guest0
Guest
Буду рад любой помощи
:)
5 дек 05, 15:50    [2141942]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про каунтеры или счётчики  [new]
Ort84
Member

Откуда: Украина, Донецк
Сообщений: 569
Guest0
Буду рад любой помощи
:)


У тебя есть таблица Таб1, тебе нужно пронумеровать ее записи, предварительно отсортировав их. Запросом это трудно сделать, т.к. записи отсортированы. Приходится делать на VBA + создание дополнительной таблицы, в которой будет находится РЕЗУЛЬТАТ.

В str1 содержится твоя отсортированная таблица, записи которой нужно пронумеровать.

![№пп] = i 'номер пп, который ты формируешь
![Текст] = rst![Текст] ' просто ЛЮБОЕ поле.
6 дек 05, 01:35    [2143487]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить