Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.05.2023, 13:53
Ru_Di Ru_Di вне форума
Прохожий
 
Регистрация: 13.05.2023
Сообщения: 6
Версия Delphi: Delphi 11
Репутация: 10
По умолчанию Создание временной таблицы

Добрый день.
Перерыл кучу статей в инете, но так и не нашел подходящего решения.
Подскажите пжл, как создать временную таблицу при открытии формы.
В последствии в нее буду записывать и хранить информацию, пока не будет сохранена информация на основной форме, если вместо сохранения будет отмена, то таблицу просто закрываю/уничтожаю. Если же произойдет сохранение, то все информацию из временной переношу в основную.

Можно какие нибудь примеры создания таблицы?
Использую Delphi 11 и СУБД Access

Последний раз редактировалось Ru_Di, 13.05.2023 в 13:56.
Ответить с цитированием
  #2  
Старый 13.05.2023, 20:11
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,053
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Посмотри, очень много разных компонентов типа TMemoryTable.
Так же можно сделать на основе TClientDataSet.
Это просто хранение данных в памяти.

Ну а в СУБД можно сделать нормальную таблицу.
Можно просто создать статическую таблицу и просто очищать ее.
Можно создавать и уничтожать динамически с помощью SQL:
Код:
CREATE TABLE {Name} (
ID  INTEGER,
...
)
потом просто дропаешь ее:
Код:
DROP TABLE {Name}
Ответить с цитированием
  #3  
Старый 14.05.2023, 14:21
Ru_Di Ru_Di вне форума
Прохожий
 
Регистрация: 13.05.2023
Сообщения: 6
Версия Delphi: Delphi 11
Репутация: 10
По умолчанию

Пошел через физическую (временную) таблицу в БД в нее записываю, потом переношу в основную, очищаю временную.

Но вот с переносом возникла сложность, что в я делаю не так, что не выполняется копирование?

Код:
var
myQ: TADOQuery;
myQ1: TADOQuery;
begin
  myQ := TADOQuery.Create(nil);
  myQ.Connection := DM.ADOConnect_baza_konkursov;
  myQ.SQL.Clear;
  myQ.Parameters.Clear;
  myQ.sql.Text := 'SELECT * FROM tab_predmet_zakupki_temp';
  myQ.Open;
  if myQ.RecordCount > 0 then 
    begin
      myQ1 := TADOQuery.Create(nil);
      myQ1.Connection := DM.ADOConnect_baza_konkursov;

      myQ.First;
      while not myQ.Eof do
        begin
          myQ1.SQL.Clear;
          myQ1.Parameters.Clear;
          myQ1.sql.Text := 'INSERT INTO tab_predmet_zakupki (naimenovanie) VALUES (:naimenovanie)';
          myQ1.Parameters.ParamByName('naimenovanie').Value := myQ.FieldByName('naimenovanie').Text;
          myQ1.ExecSQL;

          myQ.Next;
        end;
    end;
Ответить с цитированием
  #4  
Старый 14.05.2023, 18:03
Ru_Di Ru_Di вне форума
Прохожий
 
Регистрация: 13.05.2023
Сообщения: 6
Версия Delphi: Delphi 11
Репутация: 10
По умолчанию

Цитата:
Сообщение от Ru_Di
Но вот с переносом возникла сложность, что в я делаю не так, что не выполняется копирование?
Нашел причину, просто забыл обновить Грид ((((, а так про копировалось.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:10.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter