![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый день.
Есть код который делает импорт данных из StringGrid в таблицу MS SQL Server 2000 Код:
ADODataSet1.DisableControls;
try
ADODataSet1.First;
for iRow := StringGrid2.FixedRows to StringGrid2.RowCount - 1 do begin
if StringGrid2.Cells[1,iRow] <> '' then
begin
ADODataSet1.Insert;
ADODataSet1['Date'] := StrToDateTime(StringGrid2.Cells[1, iRow]);
ADODataSet1['AbonentA'] := StringGrid2.Cells[2, iRow];
ADODataSet1['AbonentB'] := StringGrid2.Cells[3, iRow];
ADODataSet1['Vremia'] := StringGrid2.Cells[4, iRow];
ADODataSet1['Dlit'] := StringGrid2.Cells[5, iRow];
ADODataSet1['Dlit_fakt'] := StringGrid2.Cells[6, iRow];
ADODataSet1['Vh_trunk'] := StringGrid2.Cells[7, iRow];
ADODataSet1['Ish_Trunk'] := StringGrid2.Cells[8, iRow];
ADODataSet1['Prichina'] := StringGrid2.Cells[9, iRow];
ADODataSet1['Zona'] := StringGrid2.Cells[10, iRow];
ADODataSet1.Post;
end;
end;
finally
ADODataSet1.EnableControls;
end;Надо осуществить проверку импортируемых данных на существование в таблице. |
|
#2
|
||||
|
||||
|
А по какому полю ты посчитал бы правильным проверять наличие записи в таблице? Или по нескольким?
|
|
#3
|
|||
|
|||
|
Хотелось бы по полям DATE и VREMIA
|
|
#4
|
||||
|
||||
|
Вообще есть два решения. Создать уникальный индекс на таблицу и обрабатывать ошибку вставки или выполнить запрос предварительный к БД на наличие дублирующей записи.
|
|
#5
|
|||
|
|||
|
Цитата:
Код:
SELECT Count(*) AS Cnt FROM TableName WHERE Date = :D AND Vremia = :V Выполняешь запрос, если вернулось > 0 в поле Cnt, то такая запись уже существует. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
royun (29.12.2011)
| ||
|
#6
|
|||
|
|||
|
Да работает.
Например: у меня в StringGride 100 записей выполняю Ваш скрипт Код:
SELECT Count(*) AS Cnt FROM TableName WHERE Date = :D AND Vremia = :V Если получится в поле cnt тоже 100 записей, то получится что такие записи в таблице есть. Значит надо вывести сообщение, что такие записи есть и прекратить импорт данных. Для более точности можно добавить и еще одно поле для проверки. Спасибо. |