1 (edited by mitrich45 2014-12-24 09:32:46)

Topic: Первоначальное заполнение справочников SQLExecute

День добрый, хочется реализовать автоматическое заполнение справочников при работе с базой с нуля.
Как можно задать скрипт который при старте будет проверять наличие записей в справочнике.
Допустим надо проверить справочник "Статусы ремонта"  на наличии записи  "Ремонтируется" , если такого нет, то создать.
Только такое в голову приходит

   if VarToStr( SQLExecute('SELECT count(id) FROM status WHERE statusname="Ремонтируется";') ) = '0' then
  begin
         SQLExecute('INSERT INTO  status ("statusname") VALUES ("Ремонтируется");');
    end;

Еще интересует, если надо заполнить скажем статусами "Готов", "Выдан", "Оплачен", какого вида код будет
Спасибо заранее

2 (edited by mitrich45 2014-12-24 18:39:35)

Re: Первоначальное заполнение справочников SQLExecute

С одиночными данными разобрался, работает....но вот вводить несколько записей приходится так:

if (VarToStr( SQLExecute('SELECT count(id) FROM status WHERE statusname="Ремонтируется";') ) = '0') then
  begin
         SQLExecute('INSERT INTO  status ("statusname") VALUES ("Ремонтируется");');
    end;
    if  (VarToStr( SQLExecute('SELECT count(id) FROM status WHERE statusname="Готов";') ) = '0') then
  begin
       SQLExecute('INSERT INTO  status ("statusname") VALUES ("Готов");');
    end;

Может можно как то оптимизировать

Re: Первоначальное заполнение справочников SQLExecute

mitrich45
в принципе оптимизация тут ничего не даст, если конечно у вас не сотни записей в словарях, но можно записать код чуть короче

if SQLExecute('SELECT count(id) FROM status WHERE statusname="Ремонтируется";')  = '0' then SQLExecute('INSERT INTO  status ("statusname") VALUES ("Ремонтируется");');

if SQLExecute('SELECT count(id) FROM status WHERE statusname="Готов";') = '0'  then SQLExecute('INSERT INTO  status ("statusname") VALUES ("Готов");');
Dmitry.

Re: Первоначальное заполнение справочников SQLExecute

Спасибо! Гораздо ваш пример компактнее будет