Конференция "Базы" » Добавление записи в БД (Pascal) [MC ACCESS]
 
  • zigzac © (11.05.14 21:38) [0]
    Всем Привет!

    В первой форме при нажатии кнопки Buttun создаётся таблица и переход на следующую форму.
    Во второй к этой таблице добавляем записи со значениями.
    (мне нужно простой пример отладить , а остальное я уже навешаю).
    Первая форма

    Код

    unit Unit3;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB;

    type
    TForm3 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form3: TForm3;

    implementation

    uses Unit4;

    {$R *.dfm}

    procedure TForm3.Button1Click(Sender: TObject);
    var
    S:String;
    begin
    s := 'CREATE TABLE V(V Int,B Int)';
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add(s);
    ADOQuery1.ExecSQL;
    Form3.Hide;
    Form4.Show

    end;

    end.

    Вторая форма

    Код
    unit Unit4;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids;

    type
    TForm4 = class(TForm)
    ADOConnection1: TADOConnection;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    ADOQuery1: TADOQuery;
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form4: TForm4;

    implementation

    {$R *.dfm}

    procedure TForm4.Button1Click(Sender: TObject);
    begin
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('SELECT * FROM V');
    ADOQuery1.Open;
    ADOQuery1.SQL.Add('INSERT INTO V(V,B)VALUES(2,2)');
    ADOQuery1.ExecSQL;
    ADOQuery1.Close;
    ADOQuery1.Post

    end;

    end.

    Пишет ошибка в поле FROM.
    Как исправить?
    Может WHERE надо? (только какие значения ставить после него не пойму)

    Спасибо за участие..............
  • Ega23 © (11.05.14 22:03) [1]
    ADOQuery1.SQL.Text := 'INSERT INTO V(V,B)VALUES(2,2)';

  • zigzac © (12.05.14 02:07) [2]
    Я заменил строку на вашу.
    Выдаёт ............. insert mode.
  • zigzac © (12.05.14 02:08) [3]
    Я заменил строку на вашу.
    Выдаёт ошибку    ............. insert mode.
  • sniknik © (12.05.14 08:20) [4]
    смотрю и слеза прошибает... столько лет прошло, а "кверик" все еще мозги начинающим заси... пудрит.

    нафига это все? открыл, закрыл, вставил команду предварительно записав ее в переменную... программист граффоман?
    все что у тебя в программе делается это -  

    ADOConnection1.Execute('CREATE TABLE V(V Int,B Int)');
    ADOConnection1.Execute('INSERT INTO V(V,B)VALUES(2,2)');

    все. остальное, лишнее, в том числе и ошибки из-за путаницы в лишних действиях.

    p.s. пока не поздно, т.к. еще ничего не знаешь и переучиваться не придется, выкинь ADOQuery, ADOTable, ADOProcedure, учись пользоваться компонентами "по контексту" ADOCommand (вариант выше не универсальный, пойдет только если нет параметров) для команд и ADODataSet для данных.
  • Дмитрий (12.05.14 16:00) [5]

    > ADOQuery1.SQL.Add('SELECT * FROM V');ADOQuery1.Open;ADOQuery1.
    > SQL.Add('INSERT INTO V(V,B)VALUES(2,2)');

    Вы к тексту одного запроса добавили текст другого.
    Разумется выдает ошибку.
 
Конференция "Базы" » Добавление записи в БД (Pascal) [MC ACCESS]
Есть новые Нет новых   [118640   +43][b:0][p:0.001]