Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.10.130] |
|
Сообщ.
#1
,
|
|
|
Помогите пожалуйста с задачей(я в этом совсем новичок). Для начала мой код:
if ADOQuery1.Locate('employee_id', Variant(ADOQuery2.FieldbyName('e_id').AsInteger), [loCaseInsensitive]) Then Showmessage('Запись уже существует') else begin ADOQuery1.insert; ADOQuery1.FieldByName('employee').AsString:=ADOQuery2.FieldByName('employee'); ADOQuery1.Post; end; У меня происходит сначала проверка записи на дубликат, потом вставка записи. Все функционирует. Только проблема если я выбераю не одну а несколько записей, вставка все равно происходит не смотря на то что в некоторых из выбранных записей дубликат присутствует. Как это исправить, пожалуйста помогите очень надо (если можно без sql запроса) |
Сообщ.
#2
,
|
|
|
Цитата raccoon @ Только проблема если я выбераю не одну а несколько записей ем.... locate не умеет искать две строки. TDataSet не умеет иметь сразу несколько позиций (только одну (+ метки но это не всчет. и то наверное это в гриде метки)) |
Сообщ.
#3
,
|
|
|
Как организован проход (цикл) по ADOQuery2?
|
Сообщ.
#4
,
|
|
|
Цитата Bas @ Цикл вообще никак не организован, об этом я даже не подумал мне казалось локейт вполне достаточно. Если честно я даже не имею представление как этот цикл сделать, не подскажите пожалуйста, очень важно? |
Сообщ.
#5
,
|
|
|
Цитата raccoon @ Цикл вообще никак не организован, об этом я даже не подумал При множественном выборе как вы делаете перебор записей в ADOQuery2? Цитата raccoon @ мне казалось локейт вполне достаточно. Цитата ViktorXP @ locate не умеет искать две строки. Цитата raccoon @ Если честно я даже не имею представление как этот цикл сделать, не подскажите пожалуйста, очень важно? Как то так. if ADOTable1.Supports(coSeek) then begin with ADOTable1 do begin Close; IndexName := strIndex; CursorLocation := clUseServer; Open; Seek (Edit1.Text, soFirstEQ); end; if ADOTable1.EOF then ShowMessage ('Record value NOT found'); end или так while not ADOQuery2.EOF do if ADOQuery1.Locate('employee_id', Variant(ADOQuery2.FieldbyName('e_id').AsInteger), [loCaseInsensitive]) Then Showmessage('Запись уже существует') else begin ADOQuery1.insert; ADOQuery1.FieldByName('employee').AsString:=ADOQuery2.FieldByName('employee'); ADOQuery1.Post; end; ..... |
Сообщ.
#6
,
|
|
|
извините но первый код совсем не понял, поэтому испробовал второй, но как то пошло все не так... Вместо, того чтобы проверять записи выбранные мной, проверяются все записи, и вставка происходит как то странно, у меня теперь в базе на 2000 записей больше чем прежде .
|
Сообщ.
#7
,
|
|
|
Цитата raccoon @ Вместо, того чтобы проверять записи выбранные мной, Где выбираете где храните выбранное? Цитата raccoon @ вставка происходит как то странно, у меня теперь в базе на 2000 записей больше чем прежде Ошибка в 17-ой строке. Телепаты сейчас в отпуске. |
Сообщ.
#8
,
|
|
|
Цитата Bas @ выбираю в dbgrid-e, храню в mysql. Использовал второй код, ошибка не знаю в чем, сделал запрос в mysql а там теперь более 2 тысяч записей, а было около 40, и именно те записи повторяются, которые я выбрал |
Сообщ.
#9
,
|
|
|
Цитата raccoon @ в mysql а там теперь более 2 тысяч записе Что было в ADOQuery2? Цитата raccoon @ выбираю в dbgrid-e, храню в mysql. Тогда цикл (for) надо проводить по DBGrid.SelectedRows.Count |
Сообщ.
#10
,
|
|
|
спасибо очень помогло!!!!
|