|
|
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Это был вопрос к Shuhard'у. Но он уже отменен. Насчет что должно быть вместо ... - см. 12:51. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 14:44 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Что-то не получается вместо ... написать так, чтобы работало, я так примерно предполагаю, что надо написать что-то вроде CurrentRecord, но только как это написать не знаю, помогите, голова совсем не соображает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 19:59 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Я в 12:51 писал:... - введенный адрес Каким образом пользователь его вводит и в какой переменной его можно взять, мне отсюда не видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 20:35 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
мне отсюда не видно А что надо сделать, чтобы стало видно? Ну не получается у меня, честное слово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 22:26 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Можно протянуть оптический кабель в Тель-Авив... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 22:29 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2004, 22:42 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Ok. Я получил в "n" значение поля "№адреса". А как теперь это значение записать в таблицу "тбл_адрес"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 20:52 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Если это та таблица, а которой тут все время шла речь, то: 1. Получаем номер кода так, как я написал в посте от 19 май 04, 19:58. 2. Заносим в таблицу не знаю как - это зависит от задачи. Например, через рекордсет и AddNew. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 20:59 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
1. Да. 2. >Заносим в таблицу не знаю как - это зависит от задачи. Т.е. зависит от задачи ? ? ? Задача - занести данные в таблицу в поле для текущего адреса. Как именно это лучше сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 21:05 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 21:10 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Студент, заносить данные в таблицу можно многими разными способами. Ты ведь на Аксессе уже год, если не ошибаюсь? Ну так мог бы обратить внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 21:39 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
>заносить данные в таблицу можно многими разными способами. Да, я это знаю, поэтому и спросил какой из способов DAO наиболее оптимальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 21:59 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Спасибо всем большое ! Написал следующий код: на AfterApdate формы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Но, при многопользовательской работе mdb при одновременном обращении к полю "ад_номер_адреса", бывают сбои в нумерации. Т.е. например ввожу адрес Кукуевка, и для нее получаю, при многопользовательской работе: Код: plaintext 1. 2. 3. 4. 5. 6. Или как с этим можно бороться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 23:54 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Именно об этом я предупреждал в посте от 19 май 04, 19:58. Похоже, что блокировка тут будет надежнее всего... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2004, 23:56 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
К сожалению блокировка не подойдет. Т.е. здесь чтобы работало можно поставить только пессимистическую блокировку, но пользователей это не устроит. Не-а. Это что же получится, что один пользователь вводит информацию, а все остальные его ждут? А возможно ли какое-то другое решение. Я не знаю, может какая-то промежуточная таблица обмена данными спасет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 00:00 |
|
||
|
Как завести числовое поле типа счетчик?
|
|||
|---|---|---|---|
|
#18+
Боюсь, что не получится. Два человека одновременно заполняют одну таблицу. И один должен знать, что сделал другой. А он не может знать, потому что тот еще не сделал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2004, 00:03 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1674371]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
60ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 341ms |

| 0 / 0 |
