Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2010, 15:05   #1
MSD
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 85
Печаль Работа со списками в Тable

Здравствуйте. Помогите пожалуйста решить следующую проблему. На форме есть 5 dbedit'ов, dbgrid, table, query, datasource... и кнопка естественно..) В пяти эдитах пользователь пишет Фамилию Имя Отчество Телефон Дату рождения и нажимает кнопочку добавит в базу. В таблице содержится более 2000 строк с столбцами "Фамилия", "Имя", "Отчество", "Телефон", "Дата рождения"... так вот проблема то в чем, когда пользователь заполняет данные и нажимает кнопочку "добавить" нужно сделать проверку не существует ли такой пользователь в базе и если такой пользователь есть, то сообщить пользователю и запись не добавлять, а если у него нет телефона или даты рождения, а в dbedite на данный момент оно заполнено то дабить эти данные в существующую запись. Помогите примером пожалуйста, очень нужно. Спасибо.
MSD вне форума Ответить с цитированием
Старый 11.05.2010, 15:20   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Используйте SQL. И подобные темы посмотри.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 11.05.2010, 15:58   #3
MSD
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 85
По умолчанию

посмотрел похожего мало, и реализовать не получается, можно пример..? (
MSD вне форума Ответить с цитированием
Старый 11.05.2010, 15:58   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
заполняет данные и нажимает кнопочку "добавить"
Если та таблица в которую нужно добавить уже открыта в Query или Table, то методом locate можно попробовать найти запись пользователя, взять значения из полей. Если же таблица не открыта то составляешь запрос
select * from пользователи where пользователь=тому-то, и если запрос что-то возвращает (not Query.Eof) то такой пользователь уже есть
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.05.2010, 16:09   #5
MSD
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 85
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Если же таблица не открыта то составляешь запрос
select * from пользователи where пользователь=тому-то, и если запрос что-то возвращает (not Query.Eof) то такой пользователь уже есть
спасибо конечно, но не совсем понятно, можно конкретнее как это будет выглядеть... спасибо.
MSD вне форума Ответить с цитированием
Старый 11.05.2010, 16:40   #6
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

как пример, перед записью в таблицу проверить такой вот запрос
Код:
 query1.text:='select <поле_с_фамилией>, <поле_с_именем>, <поле_с_отчеством>, <поле_с_датой_рождения> 
from <таблица_с_данными_о_пользователях>
 where <поле_с_фамилией>=<фамилия>
 and   <поле_с_именем>=<имя> 
 and   <поле_с_отчеством>=<отчество> 
 and   <поле_с_датой_рождения>=<дата_рождения>';
 query1.open;
 if query1.isempty (то есть пустой набор)
  then <записать_данные_в_таблицу>;
возникает вопрос: а если нужно будет ввести человека который совпадает с тем уже который есть в базе по полям: имя, фамилия, отчество как тогда быть?
или например такое же совпадение, вот только для первого мы имеем данные но не имеем даты рождения, а для второго имеем все данные+дату рождения? тогда, если поступать так как ты хочешь, то есть:
Цитата:
а если у него нет телефона или даты рождения, а в dbedite на данный момент оно заполнено то дабить эти данные в существующую запись.
данные для второго пользователя дозапишутся для первого пользователя, а это не совсем точно.
может просто добавлять нового пользователя, а для тех которые не польностью заполнены разработать форму для дозаполнения.
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 16.05.2010, 17:04   #7
MSD
Пользователь
 
Регистрация: 23.03.2009
Сообщений: 85
По умолчанию

Код:
 query1.text:='select <поле_с_фамилией>, <поле_с_именем>, <поле_с_отчеством>, <поле_с_датой_рождения> 
from <таблица_с_данными_о_пользователях>
 where <поле_с_фамилией>=<фамилия>
 and   <поле_с_именем>=<имя> 
 and   <поле_с_отчеством>=<отчество> 
 and   <поле_с_датой_рождения>=<дата_рождения>';
 query1.open;
 if query1.isempty (то есть пустой набор)
  then <записать_данные_в_таблицу>;
не получилось сделать так.... Есть еще варианты подскажите плиз... Спс.
MSD вне форума Ответить с цитированием
Старый 17.05.2010, 11:36   #8
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

Цитата:
не получилось сделать так.... Есть еще варианты подскажите плиз... Спс.
код покажи
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со списками puzik_off Фриланс 8 30.12.2009 12:02
c++. Работа со списками megavolt91 Помощь студентам 0 14.06.2009 21:31
Работа со списками Dimo444ka Помощь студентам 2 01.06.2008 16:34
Работа со списками. radist Паскаль, Turbo Pascal, PascalABC.NET 4 07.05.2007 00:05