|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
А по какому полю ты посчитал бы правильным проверять наличие записи в таблице? Или по нескольким?
Google в помощь |
#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 записей, то получится что такие записи в таблице есть. Значит надо вывести сообщение, что такие записи есть и прекратить импорт данных. Для более точности можно добавить и еще одно поле для проверки. Спасибо. |