|
Не считывается новая строка в таблице сразу после ее записи
|
|||
---|---|---|---|
#18+
Нужно сохранить в таблице строку с количеством мест отгрузки, и сразу же прочитать ее, чтобы скопировать в таблицу остатков. В дельфи делаю запрос с Save, затем сразу же с Open в этой же таблице, чтобы посчитать остатки, и перезаписываю результат в таблицу остатков. Так вот, при этом последняя записанная строка не учитывается в вычислении. Если же делаю пошаговую трассировку, то строка считается. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2021, 08:52 |
|
Не считывается новая строка в таблице сразу после ее записи
|
|||
---|---|---|---|
#18+
Точку останова в программе ставишь, вычисляет правильно, а запускаешь программу Run, строка не подсчитывается. Может быть из-за того, что запросы без транзакций? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2021, 09:47 |
|
Не считывается новая строка в таблице сразу после ее записи
|
|||
---|---|---|---|
#18+
svnvlad, Это в разных соединениях (сессиях) или в одном? Приведите код. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2021, 10:36 |
|
Не считывается новая строка в таблице сразу после ее записи
|
|||
---|---|---|---|
#18+
svnvlad, Во-первых, вам на форум по Дельфе (сразу готовьте свой код для демонстрации, включая "запрос с Save"). Во-вторых, проблема изложена так сумбурно, что понятно чуть более чем ничего. Вы таблицу остатков заново читаете? Возможно, у вас датасет просто не обновляется после вставки туда новой записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2021, 11:33 |
|
Не считывается новая строка в таблице сразу после ее записи
|
|||
---|---|---|---|
#18+
Gluck99 svnvlad, Во-первых, вам на форум по Дельфе (сразу готовьте свой код для демонстрации, включая "запрос с Save"). Во-вторых, проблема изложена так сумбурно, что понятно чуть более чем ничего. Вы таблицу остатков заново читаете? Возможно, у вас датасет просто не обновляется после вставки туда новой записи. Я обнаружил проблему: при сохранении времени DATETIME я сохраняю одно время '2021-11-16 13:59:48', а в базе оказывается на 1 секунду больше '2021-11-16 13:59:49'. Потом в запросе читаю эту записанную строку, ориентируясь по времени: WHERE time_accepted = '2021-11-16 13:59:48', и соответственно, строка не попадает в выборку. А по какому такому праву он сохраняет другое время? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2021, 12:10 |
|
Не считывается новая строка в таблице сразу после ее записи
|
|||
---|---|---|---|
#18+
[quot svnvlad#22396522] Gluck99 Я обнаружил проблему: при сохранении времени DATETIME я сохраняю одно время '2021-11-16 13:59:48', а в базе оказывается на 1 секунду больше '2021-11-16 13:59:49'. Потом в запросе читаю эту записанную строку, ориентируясь по времени: WHERE time_accepted = '2021-11-16 13:59:48', и соответственно, строка не попадает в выборку. А по какому такому праву он сохраняет другое время? Потому что не надо в запрос пихать время на клиенте (компьютере пользователя), которое может быть, во-первых, какое угодно, а во-вторых, клиенты могут быть в разных часовых поясах, что добавит вам головной боли. В базу надо писать время на сервере. Тут два варианта. Либо а) пишите в запросе на вставку записей NOW() вместо значения даты-времени поля time_accepted, либо б) для поля time_accepted устанавливаете значение по умолчанию в CURRENT_TIMESTAMP, таким образом в момент создания записи у вас всегда будет актуальное время. И ещё. А с какой целью вы делаете выборку последней записи по времени? Время у вас вместо уникального ключа, что ли? А если кто-нибудь ещё в это же время вставит запись, секунда в секунду? Используйте ключи. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2021, 12:25 |
|
Не считывается новая строка в таблице сразу после ее записи
|
|||
---|---|---|---|
#18+
[quot Gluck99#22396539] svnvlad пропущено... Потому что не надо в запрос пихать время на клиенте (компьютере пользователя), которое может быть, во-первых, какое угодно, а во-вторых, клиенты могут быть в разных часовых поясах, что добавит вам головной боли. В базу надо писать время на сервере. Тут два варианта. Либо а) пишите в запросе на вставку записей NOW() вместо значения даты-времени поля time_accepted, либо б) для поля time_accepted устанавливаете значение по умолчанию в CURRENT_TIMESTAMP, таким образом в момент создания записи у вас всегда будет актуальное время. И ещё. А с какой целью вы делаете выборку последней записи по времени? Время у вас вместо уникального ключа, что ли? А если кто-нибудь ещё в это же время вставит запись, секунда в секунду? Используйте ключи. Там нужно записать указанное время, оно не обязательно должно быть Now(). Каждая строка имеет свое время записи, и потом в хронометраж записываем во сколько времени было сколько груза на складе (таймлайн). После записи отгрузки как раз вот вычисляю последнее значение количества груза для таймлайна, считывая последнюю запись. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2021, 12:30 |
|
|
start [/forum/topic.php?fid=47&gotonew=1&tid=1827883]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
178ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 238ms |
total: | 526ms |
0 / 0 |