LINUX.ORG.RU

Нужна помощь с разработкой реляционной БД на Lazarus

 , ,


0

1

Собственно сабж. Есть вот такой код реляционной БД (с sqlite) (см. ниже) но в Лазарусе он не собирается, выдает

db.pas(9,24) Fatal: Circular unit reference between db and sqlite3conn

Сам код этой БД:

 unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, sqlite3conn, sqldb, db, FileUtil, LResources, Forms,
  Controls, Graphics, Dialogs, DBGrids, DbCtrls, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    ButtonCancel: TButton;
    ButtonCommit: TButton;
    Datasource1: TDatasource;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    Label1: TLabel;
    SQLite3Connection1: TSQLite3Connection;
    SQLQuery1: TSQLQuery;
    SQLTransaction1: TSQLTransaction;
    procedure ButtonCancelClick(Sender: TObject);
    procedure ButtonCommitClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1. Caption:='SQLite database with DBNavigator';

  SQLite3Connection1.DatabaseName:='Student.db';
  SQLite3Connection1.Connected:=true;

  SQLTransaction1.Database:=SQLite3Connection1;

  SQLQuery1.Database:=SQLite3Connection1;
  SQLQuery1.SQL.text:='Select * FROM Student';
  SQLQuery1.open;

  DataSource1.DataSet:=SQLQuery1;

  DBGrid1.DataSource:=DataSource1;

  DBNavigator1.DataSource:=DataSource1;

  DBEdit1.DataSource:=Datasource1;
  DBEdit2.DataSource:=Datasource1;
  DBEdit3.DataSource:=Datasource1;
  DBEdit4.DataSource:=Datasource1;

  DBEdit1.DataField:='StudentID';
  DBEdit2.DataField:='First';
  DBEdit3.DataField:='Second';
  DBEdit4.DataField:='Form';

  DBGrid1.AutoFillColumns:=true;

end;

procedure TForm1.ButtonCommitClick(Sender: TObject);
begin
  SQLQuery1.Edit;
  SQLQuery1.UpdateMode:=UpWhereChanged;
  SQLQuery1.ApplyUpdates;
  SQLTransaction1.Commit;
  SQLQuery1.Close;
  SQLQuery1.Open;
end;

procedure TForm1.ButtonCancelClick(Sender: TObject);
begin
  SQLQuery1.Close;
  SQLQuery1.Open;
end;

initialization
  {$I unit1.lrs}

end.  

Дело в том, что с самим Лазарусом знаком лишь поверхностно, но нужно разработать БД. Ну очень нужно.

Перемещено mono из general

В development надо писать. Там как раз над курсовиком работают.

greenman ★★★★★
()

Может модераторы перенесут?

RedEyedMan
() автор топика

Циклические ссылки на модули.

Решается выносом чего то из «sqlite3conn, sqldb, db» (что из этого добавлено руками?) в uses после implementation

Kuzz ★★★
()
Ответ на: комментарий от RedEyedMan

«sqlite3conn, sqldb, db» (что из этого добавлено руками?)

Попробовать так:

interface

uses
  Classes, SysUtils, sqlite3conn, sqldb, FileUtil, LResources, Forms,
  Controls, Graphics, Dialogs, DBGrids, DbCtrls, StdCtrls;

…

implementation
uses
  db;

Kuzz ★★★
()

Всем спасибо, решилось.

RedEyedMan
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.