AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mit ZEOS auf Firebird Server + Embedded gleichzeitig zugreif
Thema durchsuchen
Ansicht
Themen-Optionen

Mit ZEOS auf Firebird Server + Embedded gleichzeitig zugreif

Offene Frage von "SBDelphi"
Ein Thema von SBDelphi · begonnen am 10. Jun 2009 · letzter Beitrag vom 10. Jun 2009
Antwort Antwort
SBDelphi

Registriert seit: 10. Jun 2009
10 Beiträge
 
#1

Mit ZEOS auf Firebird Server + Embedded gleichzeitig zugreif

  Alt 10. Jun 2009, 13:50
Datenbank: Firebird • Version: 2.1 • Zugriff über: ZEOS
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
Angehängte Dateien
Dateityp: pas mainunit_110.pas (2,6 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#2

Re: Mit ZEOS auf Firebird Server + Embedded gleichzeitig zug

  Alt 10. Jun 2009, 14:00
Hey Dein Server ist doch nicht Localhost... -> Server-IP angeben und los gehts...
ServerConnection.HostName:='localhost'; (afu einem Server )

// Grüße Martin
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Mit ZEOS auf Firebird Server + Embedded gleichzeitig zug

  Alt 10. Jun 2009, 14:42
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
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
SBDelphi

Registriert seit: 10. Jun 2009
10 Beiträge
 
#4

Re: Mit ZEOS auf Firebird Server + Embedded gleichzeitig zug

  Alt 10. Jun 2009, 21:32
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 ....
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 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