Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Mit ZEOS auf Firebird Server + Embedded gleichzeitig zugreif (https://www.delphipraxis.net/135414-mit-zeos-auf-firebird-server-embedded-gleichzeitig-zugreif.html)

SBDelphi 10. Jun 2009 13:50

Datenbank: Firebird • Version: 2.1 • Zugriff über: ZEOS

Mit ZEOS auf Firebird Server + Embedded gleichzeitig zugreif
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen!

hab da ein etwas nerviges Problem. Für die Steuerung eines Lagersystems hab ich folgende Vorgehensweise anvisiert:
Datenbestand: Firebird 2.1 auf einem Server
Fehlermeldungen: Firdbird 2.1 Embedded auf lokalem Rechner

Ich will jetzt per ZEOS auf die Datenbanken zugreifen (TZConnection).
Wie löst man das Problem, dass ich auf zwei Datenbanken gleichzeitig zugreifen muss?

Ich hab das mal versucht so zu lösen.
Delphi-Quellcode:
unit MainUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,ZConnection,DB,ZAbstractRODataset,ZAbstractDataset,ZDataset, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    UserDBConnection: TZConnection;
    ServerConnection: TZConnection;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin

    UserDBConnection.Disconnect;
    USerDBConnection.Free;

    ServerConnection.Disconnect;
    { Zugriffsverletzung -901 Invalid Transaction Handle }
    ServerConnection.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
var WideStr: WideString;
    FQuery: TZQuery;
    f: textfile;
    s: string;
begin

    UserDBConnection:=TZConnection.Create(Self);
    UserDBConnection.Database:='T:\test.fdb';
    UserDBConnection.Protocol:='firebirdd-2.0';
    UserDBConnection.User:='SYSDBA';
    UserDBConnection.Connect;
    FQuery:=TZQuery.Create(nil);
    FQuery.Connection:= UserDBConnection;
    WideStr:='SELECT * FROM BENUTZER';
    with FQuery do
    begin
        SQL.Clear;
        SQL.Add(WideStr);
        Open;
    end;
    Label1.Caption:='UserDB: '+IntToStr(FQuery.RecordCount)+' Einträge';
    FQuery.Free;

    ServerConnection:=TZConnection.Create(Self);
    ServerConnection.Database:='MATERIALSTAMM';
    ServerConnection.Protocol:='firebird-2.0';
    ServerConnection.User:='FRANZ';
    ServerConnection.Password:='nix';
    ServerConnection.HostName:='localhost';
    ServerConnection.Connect;
    FQuery:=TZQuery.Create(nil);
    FQuery.Connection:= ServerConnection;
    WideStr:='SELECT * FROM MATERIAL';
    with FQuery do
    begin
        SQL.Clear;
        SQL.Add(WideStr);
        Open;
    end;
    Label2.Caption:='ServerDB: '+IntToStr(FQuery.RecordCount)+' Einträge';
    FQuery.Free;


    { Diese Abfrage macht Tabelleabfrage auf Server, nicht von Embedded ??? }
    FQuery:=TZQuery.Create(nil);
    FQuery.Connection:= UserDBConnection;
    WideStr:='SELECT * FROM BENUTZER';
    with FQuery do
    begin
        SQL.Clear;
        SQL.Add(WideStr);
        Open;
    end;
    Label3.Caption:='UserDB: '+IntToStr(FQuery.RecordCount)+' Einträge';
    FQuery.Free;
end;

end.
Entweder nur Server oder nur Embedded funktioniert. Sobald ich aber zwei Instanzen von TZConnection erzeuge,
geht das ganze nicht mehr, Fehlercodes -904 / -901.

Was mach ich falsch?

Für Eure Hilfe vielen Dank im voraus

mschaefer 10. Jun 2009 14:00

Re: Mit ZEOS auf Firebird Server + Embedded gleichzeitig zug
 
Hey Dein Server ist doch nicht Localhost... -> Server-IP angeben und los gehts...
ServerConnection.HostName:='localhost'; (afu einem Server )

// Grüße Martin

FBrust 10. Jun 2009 14:42

Re: Mit ZEOS auf Firebird Server + Embedded gleichzeitig zug
 
Hallo,

ich habe das über zwei getrennte TZConnection-Komponenten in getrennten Datenmodulen realisiert (gut, wahrscheinlich gehts auch mit nur einem Modul), funktioniert einwandfrei.


Gruß
Frank

SBDelphi 10. Jun 2009 21:32

Re: Mit ZEOS auf Firebird Server + Embedded gleichzeitig zug
 
Hallo Martin

localhost weil der Server zu Testzwecken auf meinem Compi installiert ist, funkt auch mit einer IP Adresse nicht


Hallo Frank,
hab ich probiert, geht bei mir leider auch nicht, bekomme noch immer Fehlermeldungen .... :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz