AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Exception "Duplicate database name" bei zwei Instanzen
Thema durchsuchen
Ansicht
Themen-Optionen

Exception "Duplicate database name" bei zwei Instanzen

Ein Thema von moelski · begonnen am 12. Okt 2010 · letzter Beitrag vom 12. Okt 2010
Antwort Antwort
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Exception "Duplicate database name" bei zwei Instanzen

  Alt 12. Okt 2010, 12:22
Datenbank: AbsoluteDB • Version: 6.07 • Zugriff über: -
Moin !

Habe diesen Code hier:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ABSMain, DB, DBGrids;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;


type
  TDM = class
  private
    { Private-Deklarationen }
    DB : TABSDatabase;
    Session : TABSSession;
  public
    constructor Create;
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  one, two : TDM;

implementation

constructor TDM.Create;
begin
  inherited;
  Session := TABSSession.Create(Nil);
// Session.SessionName := 'LVSession';
  Session.AutoSessionName := True;
  Session.Active := True;

  DB := TABSDatabase.Create(Nil);
  DB.DatabaseName := 'LVDataBase';
  DB.SessionName := Session.SessionName;
end;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  one := tdm.Create;
  two := tdm.Create;
end;

end.
Im Grunde nutzlos, aber es kommt da zu einem komischen Problem.
Ich habe ja zwei Instanzen von meiner TDM Klasse. Und ich würde mal sagen das ich dann im Normalfall auch keine Konflikte zwischen "one" und "two" haben sollte.
Dennoch bekomme ich diesen Fehler:
Code:
Erste Gelegenheit für Exception bei $7C812AFB. Exception-Klasse EDatabaseError mit Meldung 'Duplicate database name 'LVDataBase''. Prozess Project2.exe (3584)
Kann sich jemand einen Reim drauf machen was da schief geht ?!
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Exception "Duplicate database name" bei zwei Instanzen

  Alt 12. Okt 2010, 12:24
Verwende mal unterschiedliche Sessionnamen
Markus Kinzler
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Exception "Duplicate database name" bei zwei Instanzen

  Alt 12. Okt 2010, 12:30
Moin Markus,

ne das isses noch nicht. Habe das mal probiert:
Delphi-Quellcode:
constructor TDM.Create;
var gu : TGUID;
begin
  inherited;
  CreateGUID(gu);
  Session := TABSSession.Create(nil);
  Session.SessionName := 'Session_'+IntToStr(gu.D2)+IntToStr(gu.D3);
  Session.Active := True;

  DB := TABSDatabase.Create(nil);
  DB.DatabaseName := 'LVDataBase';
  DB.SessionName := Session.SessionName;
  DB.DatabaseFileName := 'Test' + IntToStr(gu.D2)+IntToStr(gu.D3) + '.abs';
end;
Und im Debugger auch geschaut was an SessionName entsteht. Ist def. unterschiedlich (würde mich auch wundern wenn nicht), aber das problem ist immer noch da
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Exception "Duplicate database name" bei zwei Instanzen

  Alt 12. Okt 2010, 12:33
  DB.DatabaseName := 'LVDataBase';
Wieso heißt die Fehlermeldung wohl:

Zitat:
'Duplicate database name 'LVDataBase''
?

Du darfst keine 2 Instanzen von TABSDatabase mit gleichen DatabaseName-Property haben!
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Exception "Duplicate database name" bei zwei Instanzen

  Alt 12. Okt 2010, 12:36
Moin !

Zitat:
Wieso heißt die Fehlermeldung wohl:
Ok, das unterschiedliche Namen zum Erfolg führen ist wohl die logische Konsequenz der Meldung

Zitat:
Du darfst keine 2 Instanzen von TABSDatabase mit gleichen DatabaseName-Property haben!
Ok, dann wäre die Frage eher gewesen warum dem so ist...
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Exception "Duplicate database name" bei zwei Instanzen

  Alt 12. Okt 2010, 12:40
Ok, dann wäre die Frage eher gewesen warum dem so ist...
Weils der Hersteller es so implementiert hat.

Hintergrund wird das Verhalten der BDE sein welche die Verbindung TTable/TDatabase zur Datenbank über diese Namen als String herstellt. Ware bei ABS nicht nötig da über die Referenz verbundent wird, aber vermutlich hat man früher ein BDE-Kompatibleres Verhalten implementiert.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#7

AW: Exception "Duplicate database name" bei zwei Instanzen

  Alt 12. Okt 2010, 12:42
Danke für die Erklärung !
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  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 18:49 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