Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.31;
Скачать: CL | DM;

Вниз

Как определить наличие записи в табл. Access?   Найти похожие ветки 

 
UnDISCOvery   (2004-09-27 17:23) [0]

Всем привет!
Можно ли в Access узнать существует ли запись с определенным значением в таблице? Что-то типа выражения T-SQL "if exist"?

Пока что сделал уникальный индекс на поле и пробегаю по всем данным втупую пытаясь добавить данные и отлавливай exception.
По-моему не самый быстрый вариант :)


 
Sergey13 ©   (2004-09-27 17:26) [1]

select count(*) from table
where field1="my value"


 
Sandman25 ©   (2004-09-27 17:29) [2]

UnDISCOvery   (27.09.04 17:23)

Если exception происходит не слишком часто - то это самый быстрый вариант.
Если, наоборот, очень редко встречаются новые данные, то нужно "втупую" делать update, затем анализировать число измененных записей и в случае необходимости добавлять новую строку.


 
UnDISCOvery   (2004-09-27 17:35) [3]

Exception происходит очень часто :)
Можно поподробнее с вариантом про "тупой" update?
Алгоритм критичен ко времени, он должен выполняться как можно быстрее ... Ваш совет?


 
Sandman25 ©   (2004-09-27 17:42) [4]

query2.sql.text := "insert into mytable(id, value) values(:id, value)";
...
query1.sql.text := "update mytable set value = :value where id = :id";
query1.prepare;
while ... do
begin
 query2.params[1].asinteger := myid;
 query2.params[0].asfloat := myvalue;
 query1.execsql;
 if query1.rowsaffected = 0 then
 begin
   query2.params[0].asinteger := myid;
   query2.params[1].asfloat := myvalue;
   query2.execsql;
 end
end


 
Sandman25 ©   (2004-09-27 17:43) [5]

query2.sql.text := "insert into mytable(id, value) values(:id, :value)";
...
query1.sql.text := "update mytable set value = :value where id = :id";
query1.prepare;
while ... do
begin
query1.params[1].asinteger := myid;
query1.params[0].asfloat := myvalue;
query1.execsql;
if query1.rowsaffected = 0 then
begin
  query2.params[0].asinteger := myid;
  query2.params[1].asfloat := myvalue;
  query2.execsql;
end
end


 
Sergey13 ©   (2004-09-28 09:23) [6]

2[3] UnDISCOvery   (27.09.04 17:35)
>Exception происходит очень часто :)
Почему?


 
UnDISCOvery   (2004-09-30 15:03) [7]

Потому что новых данных гораздо меньше, а при попытке вставить старые (уже добавленные) возникает искл. ситуация из-за уникальности индекса в БД


 
ЮЮ ©   (2004-10-01 03:38) [8]

А новые откуда берутся? Если тоже из БД, то связать обе таблицы и получить список только новых записей


 
UnDISCOvery   (2004-10-01 10:59) [9]

Новые из текстового файла, к сожалению :(


 
sniknik ©   (2004-10-01 11:11) [10]

> Новые из текстового файла, к сожалению :(
форматированного? сам как распознаеш?


 
UnDISCOvery   (2004-10-01 19:32) [11]

И к сожалению неформатированного, сам распознаю и то, что нужно заношу в БД


 
sniknik ©   (2004-10-01 20:13) [12]

... (женщина легкого поведения). что за привычка задавать вопросы/отвечать на наводящие так будто исходные данные по меньшей мере секреты родины?

насколько неформатированного? КАК сам распознаеш? пример можеш привести, или решение не нужно? форум на то и нужен чтобы обсуждать а не готового решения ждать (откуда оно возьмется без обсуждений? для готового уже все сказано).
метод доступа? "уникальный индекс" (значение) откуда береш? как данные заносиш? ... в общем не будь скромником, опиши задачу.



Страницы: 1 вся ветка

Текущий архив: 2004.10.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
1-1097654097
Pentium133
2004-10-13 11:54
2004.10.31
О TList и функциях


6-1093246459
SPy
2004-08-23 11:34
2004.10.31
Права доступа к файлам


1-1098168338
Kat
2004-10-19 10:45
2004.10.31
Есть число типа smallint.


1-1097842230
MegaVolt
2004-10-15 16:10
2004.10.31
Как правильно наследовать свойства?


14-1097750932
TUser
2004-10-14 14:48
2004.10.31
Интересно, как такое можно сделать