1 (edited by Patriot10200 2022-04-22 13:00:07)

Topic: Автоматическая запись в БД

Всем драсте,
Ребят подскажите как сделать чтоб при первом запуске в БД автоматически добавлялись значение, например запускаеш первый раз программку,
и в таблицу  AUTO_marka
поле Marka
Автоматически добавлялись записи
ГАЗ
ВАЗ
Toyota
Nissan
и т.д
Чтоб при новом создании БД не добавлять мари и модели автомобилей

С уважением.

Re: Автоматическая запись в БД

Patriot10200 wrote:

Всем драсте,
Ребят подскажите как сделать чтоб при первом запуске в БД

if (SQLExecute('SELECT COUNT(id) FROM Имя_БазыДынных')='0') then
         SQLExecute('INSERT INTO Имя_БазыДынных(Имя_Поля)VALUES(" Значение ")');

Re: Автоматическая запись в БД

sibprogsistem wrote:
Patriot10200 wrote:

Всем драсте,
Ребят подскажите как сделать чтоб при первом запуске в БД

if (SQLExecute('SELECT COUNT(id) FROM Имя_БазыДынных')='0') then
         SQLExecute('INSERT INTO Имя_БазыДынных(Имя_Поля)VALUES(" Значение ")');


Спасибо

С уважением.

Re: Автоматическая запись в БД

Доброго дня ребят, появилась необходимость создания записей в бд с привязкой, наример: как вопрос выше, но с некоторыми исправлениями,

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



табл1       табл2

Nissan <- Sunny
            <- Teana
            <- Cefiro

Toyota <- Camry
            <- Nadia
            <- Fielder

если для записи в табл 1 мы используем этот код

if (SQLExecute('SELECT COUNT(id) FROM Имя_БазыДынных')='0') then
         SQLExecute('INSERT INTO Имя_БазыДынных(Имя_Поля)VALUES(" Значение ")');

как привязать к (Nissan) следующие записи (Sunny, Teana, Cefiro)

С уважением.

Re: Автоматическая запись в БД

Patriot10200 wrote:

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

  if (SQLExecute('SELECT COUNT(id) FROM Имя_БазыДынных')='0') then
  begin
    SQLExecute('INSERT INTO Имя_БазыДынных(Имя_Поля)VALUES(" Значение ")');
    SQLExecute('INSERT INTO Имя_БазыДынных(id_Имя_Поля)VALUES("'+ Last_Insert_id +'")');    
  end;

Re: Автоматическая запись в БД

pavlenko.vladimir.v wrote:
Patriot10200 wrote:

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

  if (SQLExecute('SELECT COUNT(id) FROM Имя_БазыДынных')='0') then
  begin
    SQLExecute('INSERT INTO Имя_БазыДынных(Имя_Поля)VALUES(" Значение ")');
    SQLExecute('INSERT INTO Имя_БазыДынных(id_Имя_Поля)VALUES("'+ Last_Insert_id +'")');    
  end;


выдает ошибку на (VALUES(    "'+ Last_Insert_id +'")');    ), мой код ниже, что я делаю не так?


begin
if (SQLExecute('SELECT COUNT(id) FROM Auto_marka')='0') then
    SQLExecute('INSERT INTO Auto_marka(Marka)VALUES(" Toyota ")');
end;
 if (SQLExecute('SELECT COUNT(id) FROM Auto_model')='0') then
  begin
    SQLExecute('INSERT INTO Auto_model(Model)VALUES(" Ipsum ")');
    SQLExecute('INSERT INTO Auto_model(id_Auto_marka)VALUES("'+ Last_Insert_id +'")');
  end;
С уважением.

7 (edited by pavlenko.vladimir.v 2022-10-28 08:18:50)

Re: Автоматическая запись в БД

Patriot10200 wrote:

выдает ошибку

забыл, число нужно перевести в строку
IntToStr(Last_Insert_id)

Re: Автоматическая запись в БД

pavlenko.vladimir.v wrote:
Patriot10200 wrote:

выдает ошибку

забыл, число нужно перевести в строку
IntToStr(Last_Insert_id)

Друг извини за назойливость, вот в ручную записываешь все привязывает гуд, а при авто создании создается но не привязывается, а так же выдает ошибку нет такой таблицы, закрываешь перезапускаешь и все гуд, создается


 if (SQLExecute('SELECT COUNT(id) FROM Auto_marka')='0') then
  begin
    SQLExecute('INSERT INTO Auto_marka(Marka)VALUES(" Toyota ")');

    SQLExecute('INSERT INTO Auto_model(Model)VALUES(" Ipsum ")');
    SQLExecute('INSERT INTO Auto_model(Model)VALUES(" Camry ")');
    SQLExecute('INSERT INTO Auto_model(id_Auto_marka)VALUES("'+ IntToStr(Last_Insert_id) +'")');
  end;
Post's attachments

Attachment icon STOAMS.rar 296.02 kb, 125 downloads since 2022-10-28 

С уважением.

9 (edited by pavlenko.vladimir.v 2022-10-28 11:59:53)

Re: Автоматическая запись в БД

Patriot10200 wrote:
 if (SQLExecute('SELECT COUNT(id) FROM Auto_marka')='0') then
  begin
    SQLExecute('INSERT INTO Auto_marka(Marka)VALUES(" Toyota ")');

    SQLExecute('INSERT INTO Auto_model(Model)VALUES(" Ipsum ")');
    SQLExecute('INSERT INTO Auto_model(Model)VALUES(" Camry ")');
    SQLExecute('INSERT INTO Auto_model(id_Auto_marka)VALUES("'+ IntToStr(Last_Insert_id) +'")');
  end;

Это не верный алгоритм
Last_Insert_id - содержит id последней созданной записи
у Вас же получается, что Вы пытаетесь создать несколько записей, а id Вы берете из той же таблице куда и записываете его, а Вам нужен идентификатор записи из другой таблицы.
Так же я вижу, что Вы пытаетесь создать начальную запись в таблице, модели Вам нужно привязать к марке. Тут все просто, так как запись марки будет в данном случае первой то  все  первичные записи нужно привязать просто к первому id

SQLExecute('INSERT INTO Auto_model(Model,id_Auto_marka)VALUES(" Ipsum ","1")');
    SQLExecute('INSERT INTO Auto_model(Model,id_Auto_marka)VALUES(" Camry ", "1")');

так же была не верная связь комбобоксов
еще, лучше делать такую проверку в событии формы OnShow

Post's attachments

Attachment icon STOAMS.zip 9.24 kb, 134 downloads since 2022-10-28 

10 (edited by Patriot10200 2022-10-28 14:43:28)

Re: Автоматическая запись в БД

Это не верный алгоритм
Last_Insert_id - содержит id последней созданной записи
у Вас же получается, что Вы пытаетесь создать несколько записей, а id Вы берете из той же таблице куда и записываете его, а Вам нужен идентификатор записи из другой таблицы.
Так же я вижу, что Вы пытаетесь создать начальную запись в таблице, модели Вам нужно привязать к марке. Тут все просто, так как запись марки будет в данном случае первой то  все  первичные записи нужно привязать просто к первому id

SQLExecute('INSERT INTO Auto_model(Model,id_Auto_marka)VALUES(" Ipsum ","1")');
    SQLExecute('INSERT INTO Auto_model(Model,id_Auto_marka)VALUES(" Camry ", "1")');

так же была не верная связь комбобоксов
еще, лучше делать такую проверку в событии формы OnShow

Благодарю, очень помогли,

С уважением.