|
Проверка существования дубликатов \ MC Access
|
|||
---|---|---|---|
#18+
Здравствуйте. Проверяю существование записи в БД,чтобы избежать записей-дубликатов. Если в базе данных в таблице Users уже есть запись с таким-же TabNum с которым я пытаюсь добавить нового пользователя в БД - выдается сообщение что такая запись уже существует. Проблема в том, что программа выдает это сообщение всегда. И когда в базе уже есть пользователь с таким tabnum, и когда его нет. Подскажите, где ошибка? Заметил следующую особенность: При работе с другой формой, напрямую через датагрид, код работает нормально. А тут выкидывает такие ошибки. Так и не смог разобраться в чем причина Проверяю наличие записи-дубликата так Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Данные из БД получаю так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Добавляю пользователя не через datagried, а через форму. Данные вводятся в текстовые поля либо выбираются из комбобоксов и тп. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 11:53 |
|
Проверка существования дубликатов \ MC Access
|
|||
---|---|---|---|
#18+
majhool001, Ну не корректно проверять дублирующие записи на клиенте, правильнее всего пусть база контролирует. Первое это индекс уникальным должен быть, ну или же на крайняк проверять дубликаты в триггере или в процедуре. Но самое правильное это индекс уникальный ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 12:16 |
|
Проверка существования дубликатов \ MC Access
|
|||
---|---|---|---|
#18+
majhool001 Код: vbnet 1.
Что-то мне подсказывает, что вот тут Код: c# 1.
передается что-то не то, что ожидается. Проверьте запрос вручную в базе - коректное значение возвращает? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 13:03 |
|
Проверка существования дубликатов \ MC Access
|
|||
---|---|---|---|
#18+
Axeleron, Спасибо. Да,действительно. У меня при запуске программы выделена запись с TabNum "1" в DataGriedVew Он берет ее значение и поэтому выкидывает. Мне тогда нужно при запуске "фокус" снять с датагрида? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 14:02 |
|
Проверка существования дубликатов \ MC Access
|
|||
---|---|---|---|
#18+
Нужно удостовериться, что в параметре T1 передается верное значение ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 14:10 |
|
Проверка существования дубликатов \ MC Access
|
|||
---|---|---|---|
#18+
Значение передается неправильно. При запуске программы у меня открывается форма с таким Datagried. Вот поле "Таб.#" это и есть "0"-я ячейка. Она бывает выделена при запуске программы. Когда я жму добавить, @T1 принимает ее значение и потом делает проверку: Есть ли запись c TabNum равным значение 0-й колонки выделенной записи, а она есть. И так с каждой записью. Т.е T1 он почему-то присваивает значение выделенной в DataGried записи. Как это можно исправить? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 14:41 |
|
Проверка существования дубликатов \ MC Access
|
|||
---|---|---|---|
#18+
majhool001, Вы же явно указываете в коде брать всегда значение колонки из текущего ряда. А создаете новую запись в другой форме. Так и обращайтесь к TextBox'у 'Табельный номер' формы где заводите новую запись и посылйте TextBox.Value вместо usadm.DataGridView1.CurrentRow.Cells(0).Value. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 14:45 |
|
Проверка существования дубликатов \ MC Access
|
|||
---|---|---|---|
#18+
Axeleron, Тьфу-ты, действительно, Спасибо. Не могу понять как я такое написал. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 15:00 |
|
Проверка существования дубликатов \ MC Access
|
|||
---|---|---|---|
#18+
majhool001, А получается если руками вставлять записи минуя твою программу тогда можно добавлять дубликаты. Ну не правильно это!!! База сама должна соблюдать целостность системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 15:04 |
|
Проверка существования дубликатов \ MC Access
|
|||
---|---|---|---|
#18+
Вячеслав ДА получается если руками вставлять записи минуя твою программу тогда можно добавлять дубликаты. Ну не правильно это!!! База сама должна соблюдать целостность системы. Возможно, что такой возможности добавлять руками записи напряму в БД у TCа не предусмотрено. А проверить на дубликат перед вставкой новой записи - это стандартный функционал. Табельный номер, вероятно должен быть Unique и Primary Key в таблице, на что я надеюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 15:08 |
|
Проверка существования дубликатов \ MC Access
|
|||
---|---|---|---|
#18+
AxeleronВячеслав ДА получается если руками вставлять записи минуя твою программу тогда можно добавлять дубликаты. Ну не правильно это!!! База сама должна соблюдать целостность системы. Возможно, что такой возможности добавлять руками записи напряму в БД у TCа не предусмотрено. А проверить на дубликат перед вставкой новой записи - это стандартный функционал. Табельный номер, вероятно должен быть Unique и Primary Key в таблице, на что я надеюсь. А раз есть Unique Index или Primary Key по табельному, тогда и отлавливать надо Exception Но это уже дело автора, ему намекают а он пусть делает как знает ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 15:19 |
|
Проверка существования дубликатов \ MC Access
|
|||
---|---|---|---|
#18+
Вячеслав Д, До эксепшена дело все-таки лучше не доводить ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 15:25 |
|
Проверка существования дубликатов \ MC Access
|
|||
---|---|---|---|
#18+
Вячеслав Д, Я все понимаю. Просто в этой программе пользователь (т.е я) будет работать с базой не вручную, а используя программу. А так, то, о чём вы сказали тоже можно будет реализовать,спасибо за совет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2015, 15:26 |
|
|
start [/forum/topic.php?fid=20&fpage=91&tid=1401800]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 338ms |
total: | 482ms |
0 / 0 |