-
Такой вопрос- с помощью SQL запроса записываю в таблицу ACCESS данные. После этого выполняю к этой таблице другой запрос по определению максимального значения одного из столбцов и сохраняю это значение в переменной. Выполняется это в цикле и почему- то этой переменной правильное значение присваивается не всегда. Периодически , а иногда и часто появляется 0 . Такое ощущение, что данные не успевают сохраняться в таблице. Пробовал увеличивать интервал между записью и запросом до 4-х секунд, но результата не наблюдается. В чем может быть дело?
-
insert into ...... select @@identity as lastinsertid
второй запрос не нужен
-
Не совсем понятно... Можете прояснить?
Установил, что при задержке от 5 сек. работает нормально...
-
ну включи голову-то.
если бы дело было в секундах, то макс-то по полю почему ноль возвращает? для этого надо чтобы все данные за все время во всех сделанных инсертах не успели сохраниться.
-
Не совсем понятно... Можете прояснить?
вместо двух запросов с секундами делаешь один без секунд. в тексте запроса твой инсерт, а следом за ним select @@identity as lastinsertid
после выполнения возвращается роусет из одной строки с одним полем в котором лежит то что тебе нужно.
-
Ноль возвращает потому что таблица изначально пустая, потому как периодически стирается. Первый запрос ее заполняет, а второй присваивает переменной значение поля.
-
Уважаемый rrrrrrr, я не совсем понимаю куда вставлять select @@identity as lastinsertid в нижеприведенной строке :
SQLStr1 := 'INSERT INTO Thread_' + IntTostr(i) + ' IN ' + '"' + My_DIR_Path + '"' + ' select *, Value as Value1, ' + '''' + Servers[i].Name +'''' + ' as NameP from SutvValueTable where Seconds= (SELECT max(Seconds ) From SutvValueTable) and (Status> 4095) and (Status< 8092) and (Status mod 2 = 0) ';
Пробовал в конце, но выдается синтакс еррор. Тут у меня идет запрос к двум базам.
|