Как вставить несколько значений в базу данных доступа сразу из поля редактирования, используя delphi 7 - PullRequest
0 голосов
/ 22 мая 2018

У меня есть таблица базы данных доступа с именем SalesTable со следующими именами полей: item name, buying price, selling price, profit.Я использую Adoquery и источник данных для подключения к базе данных доступа.Когда я хочу ввести записи в SalesTable, я использую следующий код:

procedure TSalesForm.BitBtn1Click(Sender: TObject);
begin
  Adoquery1.Open;
  Adoquery1.Insert;
  Adoquery1.FieldValues['Item name'] := edit1.Text;
  Adoquery1.FieldValues['buying price'] := Edit2.Text;
  Adoquery1.FieldValues['selling price'] := Edit4.Text;
  Adoquery1.FieldValues['profit'] := edit3.Text;
  Adoquery1.post;
end;

Этот код вставляет записи в SalesTable один раз, затем я должен повторить процедуру еще раз для ввода другой записи.
Однако, если я хочу вставить несколько записей одновременно, используя приведенный выше код, есть ли способ, которым я могу добиться этого вместо использования поля редактирования, поскольку оно всегда допускает одну запись за раз?Можно ли это сделать с помощью заметки?Я не могу найти конкретный поиск решения.

1 Ответ

0 голосов
/ 23 мая 2018

Итак, вам нужна форма, в которой вы можете редактировать / вставлять / удалять более одной записи в своей таблице, а затем сохранять все изменения в своей базе данных одним нажатием кнопки с минимальным кодом?

Вы могли быиспользуйте классическую настройку с ClientDataSet, как это:

Перетащите на форму следующие компоненты:

ADOConnection1
ADOQuery1
DataSetProvider1
ClientDataSet1
DataSource1
DBGrid1
Button1

Теперь настройте свойства следующим образом:

ADOConnection1   : just as before
ADOQuery1        : just as before
DataSetProvider1 : property DataSet := ADOQuery1;
ClientDataSet1   : property ProviderName := DataSetProvider1;
                   property Active := true;
DataSource1      : property DataSet := ClientDataSet1;
DBGrid1          : property DataSource := DataSource1;
....
procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientDataSet1.ApplyUpdates(0);
end;

СейчасВаши пользователи могут редактировать более одной записи в сетке, они могут вставлять более одной записи в сетку, они могут удалять более одной записи в сетке, а Button1Click позаботится обо всех обновлениях базы данных для вас

Вы также можете написать ClientDatSet1.CancelUpdates;, если хотите отменить все изменения.

Также убедитесь, что вы используете MidasLib в своих целях, например:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, unit2, DB, ADODB, StdCtrls, Grids, DBGrids, Provider, DBClient,
  MidasLib; // this one is important whan you use ClientDataSets !!

Попробуйте и посмотрите, подходит ли оно вам

...