Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Непонятка с запросами.


alvltss ©   (28.09.17 14:52

Такой вопрос-
с помощью 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) ';


Пробовал в конце, но выдается синтакс еррор.
Тут у меня идет запрос к двум базам.


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо