Конференция "Базы" » Непонятка с запросами.
 
  • alvltss © (28.09.17 14:52) [0]
    Такой вопрос-
    с помощью SQL запроса записываю в таблицу ACCESS данные.
    После этого выполняю к этой таблице другой запрос по определению максимального значения одного из столбцов и сохраняю  это значение в переменной.  Выполняется это в цикле и почему- то этой переменной правильное значение присваивается не всегда. Периодически , а иногда и часто появляется 0 . Такое ощущение, что данные не успевают сохраняться в таблице.   Пробовал увеличивать интервал между записью и запросом до 4-х секунд, но результата не наблюдается. В чем может быть дело?
  • rrrrrrr © (28.09.17 15:20) [1]
    insert into ......
    select @@identity as lastinsertid

    второй запрос не нужен
  • alvltss © (28.09.17 15:30) [2]
    Не совсем понятно... Можете прояснить?

    Установил, что при задержке от 5 сек. работает нормально...
  • rrrrrrr © (28.09.17 15:34) [3]
    ну включи голову-то.

    если бы дело было в секундах, то макс-то по полю почему ноль возвращает?
    для этого надо чтобы
    все данные
    за все время
    во всех сделанных инсертах
    не успели сохраниться.
  • rrrrrrr © (28.09.17 15:40) [4]
    Не совсем понятно... Можете прояснить?

    вместо двух запросов с секундами делаешь один без секунд.
    в тексте запроса твой инсерт, а следом за ним
    select @@identity as lastinsertid

    после выполнения возвращается роусет из одной строки с одним полем в котором лежит то что тебе нужно.
  • alvltss © (28.09.17 18:51) [5]
    Ноль возвращает потому что таблица изначально пустая, потому как периодически стирается. Первый запрос ее заполняет, а второй присваивает переменной значение поля.
  • alvltss © (29.09.17 11:09) [6]
    Уважаемый 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) ';


    Пробовал в конце, но выдается синтакс еррор.
    Тут у меня идет запрос к двум базам.
 
Конференция "Базы" » Непонятка с запросами.
Есть новые Нет новых   [118658   +23][b:0][p:0]