1 (edited by Hram 2014-08-06 09:31:02)

Topic: [Решено] Значение Record_count

Доброго времени суток.
Возможно ли через скрипт (sql-запрос) изменить начальное значение счетчика?
Например. В базе стоит счетчик с начальным значением (COUNTER:8001). Как программно изменить на 8002?

Re: [Решено] Значение Record_count

Используя скрипт и SQL запрос, так:

SQLExecute ('UPDATE tablename SET record_count=8002 WHERE record_count=8001;');
Dmitry.

Re: [Решено] Значение Record_count

Не меняет значение.
Я собственно вот это хотел сделать, но тоже на работает.

SQLExecute ('UPDATE tablename SET record_count=record_count+1;');

В tablename кроме счетчика полей нет.

Re: [Решено] Значение Record_count

Hram
Ваш вариант запроса прибавит один ко всем записям поля record_count


вам необходимо еще указать идентификатор записи, которую необходимо изменить, добавив условие WHERE

SQLExecute ('UPDATE tablename SET record_count=record_count+1 WHERE id = 5;');
Dmitry.

5 (edited by Hram 2014-07-30 13:58:28)

Re: [Решено] Значение Record_count

Понял. Еще одно уточнение. Можно ли сделать, что бы в условии WHERE была не константа (id=5), а последняя запись в таблице? Т.е. своеобразный счетчик.

Re: [Решено] Значение Record_count

Hram
Можно, для этого есть функция Last_Insert_id, которая возвращает последний добавленный id для указанной таблицы.

SQLExecute ('UPDATE tablename SET record_count=record_count+1 WHERE id = ' + IntToStr(Last_Insert_id('tablename')) +';');
Dmitry.

7 (edited by Hram 2014-08-06 09:22:11)

Re: [Решено] Значение Record_count

Еще вопрос.
1.Пытаюсь получить значение последней записи (так же интересует "последняя запись+1")

 Edit_pacient.Edit1.Text:= IntToStr(SQLExecute('SELECT record_count FROM Counter WHERE id = ' + IntToStr(Last_Insert_id('Counter')) +';'));

но возвращается 0. Где я ошибаюсь?

Re: [Решено] Значение Record_count

Действительно функция Last_Insert_id вернет ноль если база данных была снова запущена без создания записи, думаю можно так:

Edit_pacient.Edit1.Text := VarToStr( SQLExecute('SELECT record_count FROM Counter WHERE id = (SELECT MAX(id) FROM Counter)') );
Dmitry.

Re: [Решено] Значение Record_count

Век живи -век учись. Спасибо.