|
|
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
У меня есть поле "адрес". Есть таблица с двумя полями "№адреса" и "адрес". Пользователь вводит адрес и соответствующий товар по этому адресу. Мне нужно создать счетчик, который бы являлся идентификатором адреса. Т.е. если адрес уже есть в базе данных, то у адреса нет приращения счетчика и номер адреса остается константой, а если адрес изменился, то значение счетчика приращается на единицу. Как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 18:32 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
А адрес заносится в эту же таблицу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 18:35 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Да, "адрес" и "счетчик адреса" находятся в одной и той же таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 21:22 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
То есть в одной таблице сидят примерно такие данные: 1 адрес1 товар1 2 адрес2 товар8 1 адрес1 товар4 Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 00:26 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Может стоит использовать поле со списком для вода адреса; свойство "ограничиться списком" - да, если адреса нет в списке - написать процедуру добавления в таблицу нового адреса для события 'отсутствие в списке'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 12:22 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Но здесь очень нехорошо, что в одной таблице сидят два поля, дублирующих друг друга. По-нормальному надо держать в отдельной таблице адреса и коды (по одному разу), а в обсуждаемую таблицу заносить только код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 12:25 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
2 ВС: >То есть в одной таблице сидят примерно такие данные: >1 адрес1 товар1 >2 адрес2 товар8 >1 адрес1 товар4 >Так? Да, так. >Но здесь очень нехорошо, что в одной таблице сидят два поля, >дублирующих друг друга. Конечно, не очень правильно, но база уже написана, поэтому изменять все - слишком долго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 18:53 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Ну, тогда в общих чертах так: dim n as variant n=dlookup("addresscode","mytable","address=...") if isnull(n) then n=dmax("addresscode","mytable")+1 и плюс обработка на случай, когда два юзера попытаются что-то сделать одновременно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2004, 19:58 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
А без dlookup нельзя обойтись, а то он как-то тормозит процесс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 00:51 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Можно написать свою функцию, которая будет работать точно так же. function MyDLookup(s1 as string,s2 as string,s3 as string) with currentdb.openrecordset(s2,dbopendynaset,dbreadonly) .findfirst s3 if not .nomatch then MyDLookup=.fields(s1) .close end with end function плюс обработка ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 01:06 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Спасибо, мысль ясна, а обработчик ошибок на что надо ставить и как он будет выглядеть? (Для базы mdb, многопользовательской, Ac97) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 01:42 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
SORRY, а что надо писать вместо ... Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 11:52 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Обработчик ошибок можно просто On Error Resume Next. Если будет ошибка во входных параметрах, то будет возвращен Null. Теперь насчет n=dlookup("addresscode","mytable","address=..."): addresscode - имя поля, в котором сидит код адреса mytable - имя таблицы address - имя поля, в котором сидит сам адрес ... - введенный адрес ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 12:51 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Да. Я все так и написал, Access говорит "Ошибка синтаксиса", ругается на n=dlookup("addresscode","mytable", "address=..." ) Пишу этот код на текущую запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 13:02 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Можно посмотреть на код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 13:04 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
... надо понимать как нужный тебе кусок Where + см хэлп на dlookup ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 13:05 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Почему where? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 13:05 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Код: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 13:48 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
На всякий случай - Access97. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 13:52 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Например, аргумент условие часто является эквивалентом предложения WHERE инструкции SQL, но без ключевого слова WHERE. Если аргумент условие опущен, DLookup выполняет Функция DLookup См. также Пример Функция DLookup возвращает значение конкретного поля в указанном наборе (подмножестве) записей. Функцию DLookup используют в программах на Visual Basic, макросах, в выражениях в запросах, а также для определения вычисляемого элемента управления в форме или отчете. Допускается использование функции DLookup для вывода значения поля в случае, когда это поле не принадлежит к базовому источнику записей формы или отчета. Предположим, например, что базовой таблицей формы является таблица «Заказано». В форме выводятся поля «КодЗаказа», «КодТовара», «Цена», «Количество» и «Скидка». Однако поле «Марка» находится в другой таблице, «Товары». В этом случае функция DLookup позволяет создать в этой форме вычисляемое поле, в котором будет выводиться значение поля «Марка». Синтаксис DLookup(выражение, набор[, условие]) Функция DLookup использует следующие аргументы. Аргументы Описание выражение Выражение, определяющее нужное поле. Данный аргумент может задаваться строковым выражением, определяющим поле в таблице или запросе, или представлять выражение, задающее выполнение вычислений над данными, содержащимися в поле. Допускается использование в аргументе выражение имени поля в таблице или элемента управления в форме, константы, а также встроенной или определяемой пользователем функции. Не допускается использование в аргументе выражение других статистических функций по подмножеству или статистических функций SQL. набор Строковое выражение, определяющее набор записей, образующих подмножество. Может представлять имя таблицы или запроса. условие Необязательное строковое выражение, ограничивающее диапазон данных, в которых производится поиск значений. Например, аргумент условие часто является эквивалентом предложения WHERE инструкции SQL, но без ключевого слова WHERE. Если аргумент условие опущен, DLookup выполняет действия над полем, заданным в аргументе выражение, для всего набора записей. Любое поле, указанное в аргументе условие, должно принадлежать подмножеству, заданному аргументом набор; в противном случае функция DLookup возвращает значение Null. Дополнительные сведения DLookup возвращает значение поля или выражения, определенного в аргументе выражение. Выбираемые в таблице или запросе значения принадлежат подмножеству записей, определяемых аргументом набор и удовлетворяющих условиям отбора, задаваемым в аргументе условие. Если ни одна из записей набора не удовлетворяет аргументу условие или набор не содержит записей, функция DLookup возвращает значение Null. Если указанным условиям удовлетворят несколько полей, DLookup возвращает значение первого найденного поля. Рекомендуется указывать условия, обеспечивающие уникальность значения, возвращаемого функцией DLookup. Одним из способов обеспечения уникальности возвращаемых значений является указание условий для ключевого поля, такого как поле «КодСотрудника» в следующем примере: Dim varX As Variant varX = DLookup("[Фамилия]", "Сотрудники", "[КодСотрудника] = 1") При любом использовании функции DLookup в макросе или в модуле, в выражении в запросе или в вычисляемом элементе управления необходимо обеспечить правильное составление аргумента условие. Функция DLookup может быть включена в строку «Условие отбора» бланка запроса, в выражение для вычисляемого поля, а также в строку Обновление запроса запроса на обновление. Допускается использование функции DLookup в вычисляемом элементе управления в форме или отчете в случае, когда поле, для которого проводится поиск значения, не принадлежит к базовому источнику записей формы. Например, предположим, что в форме «Заказы» создано поле с именем «КодТовара», в котором выводится значение поля «КодТовара» из таблицы «Заказы», и что требуется одновременно вывести значение поля «Марка» из таблицы «Товары», соответствующее выведенному коду. Для этого следует создать в форме другое поле и ввести для него следующее выражение в ячейку свойства Данные (ControlSource). =DLookup("[Марка]", "Товары", "[КодТовара] =" & Forms![Заказы]!КодТовара) Советы • Хотя функция DLookup позволят проводить поиск значений во внешней таблице, обычно более эффективным приемом оказывается создание запроса, содержащего все необходимые поля, с последующим созданием формы или отчета на базе этого запроса. • Поиск значений во внешней таблице может быть также проведен с помощью мастера подстановок. Примечание. Несохраненные изменения записей, входящих в набор, не учитываются данной функцией. Если требуется обеспечить учет в функции DLookup измененных значений, необходимо сначала сохранить изменения с помощью команды Сохранить запись из меню Записи, перевести фокус на другу запись или вызвать метод Update. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 13:59 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Студент, а почему вместо ... ничего не подставлено??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 14:12 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Саныч 13:05 ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 14:14 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
А. То есть многоточие надо понимать как кусок where. Дошло. Да, студент этого не сделал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 14:16 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Да, спасибо, дошло. А что примерно должно быть в WHERE? Я тоже не понял Саныч 13:05? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 14:33 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32529648&tid=1674371]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 520ms |

| 0 / 0 |
