Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Merkwürdiges Problem: SQL Zugriff funktioniert nur übers WAN (https://www.delphipraxis.net/86919-merkwuerdiges-problem-sql-zugriff-funktioniert-nur-uebers-wan.html)

emsländer 21. Feb 2007 09:08

Datenbank: MSSQL • Version: 2005 SP2 • Zugriff über: ADO und direkt

Merkwürdiges Problem: SQL Zugriff funktioniert nur übers WAN
 
Moin,

hab hier mal wieder ein nettes Problemchen. Der Zugriff übers WAN (DSL6000 via VPN) klappt.
Im LAN selbst wird der Datensatz nicht gefunden, als wenn dem Rechner da irgendwas zu schnell geht :gruebel:

Delphi-Quellcode:
function zeige_dokument_aus_sql(nummer, dokumentname, sAppDir : string) :integer;
  var _stmp : string;
   _query : Tsqlquery;
   erg64 : string;
   erg  : string;
   fs   : TFilestream;
begin
  result := 0;
  _query := TSQLquery.Create(nil);
     _query.sqlconnection := AktenManager.SQLConnection;
     try
      if fileexists(sAppDir+'\tmp.rtf') then deletefile(sAppDir+'\tmp.rtf');
      _stmp := 'select dokument from finanzdesk.dbo.vertragswerk where lfdnr ='+nummer;
      aktenmanager.edt_sql_userverwaltung.Text := _stmp;
      AktenManager.edt_sql_userverwaltung.Visible := aktenmanager.cb_sql_userverwaltung.Checked;
      _query.sql.Text := _stmp;

      _query.open; //=> bis hierhin klappts.

      erg64 := _query.FieldByName('dokument').Value;
      _query.close;
      erg := base64decode(erg64);
      fs := tfilestream.create(sAppDir+'\tmp.rtf', fmcreate);
      fs.Write(erg[1],Length(erg));
      fs.free;
      frm_unterlagentext.Caption :='AktenManager Textverarbeitung: '+dokumentname;
      frm_unterlagentext.edt_nummer.Text := nummer;
      frm_unterlagentext.Showmodal;
     except
      result := 99;
     end;
   freeandnil(_query);
end;

Dank im Voraus

Gruss

EL

hoika 21. Feb 2007 09:43

Re: Merkwürdiges Problem: SQL Zugriff funktioniert nur übers
 
Hallo,

du solltest deine Funktion mal mit ein paar Fehlermeldungen ausstatten,
es kann hier ne Menge schiefgehen

- RTF-Datei kann nicht gelöscht werden
- RTF-Datei kann nicht erzeugt werden

Entweder du machst das mit Exceptions oder packts ne ErrorMsg String
Variable als var Parameter mit rein.


Heiko

emsländer 21. Feb 2007 10:15

Re: Merkwürdiges Problem: SQL Zugriff funktioniert nur übers
 
Zitat:

Zitat von hoika
Hallo,

du solltest deine Funktion mal mit ein paar Fehlermeldungen ausstatten,
es kann hier ne Menge schiefgehen

- RTF-Datei kann nicht gelöscht werden
- RTF-Datei kann nicht erzeugt werden

Entweder du machst das mit Exceptions oder packts ne ErrorMsg String
Variable als var Parameter mit rein.


Heiko

das Löschen und Erzeugen der tmp.rtf ist nicht das Problem. Diese Kommandos kanns auch komplett weglassen und vorher eine bereits bestehende tmp.rtf manuell löschen.

Ich hatte schon ein Debugginglog eingebaut, um die Zeile des Fehlers zu finden. Das ist der Code _query.open; - als ober der den Datensatz dort nicht findet.



Gruss

EL

marabu 21. Feb 2007 11:34

Re: Merkwürdiges Problem: SQL Zugriff funktioniert nur übers
 
Hallo Emsländer,

wenn du nur mit einer einzigen Datenbank arbeitest, dann nimm die Qualifizierung des Tabellennamens besser raus:

SQL-Code:
 select dokument from vertragswerk where lfdnr = :lfdnr
Freundliche Grüße

emsländer 21. Feb 2007 12:33

Re: Merkwürdiges Problem: SQL Zugriff funktioniert nur übers
 
Zitat:

Zitat von marabu
Hallo Emsländer,

wenn du nur mit einer einzigen Datenbank arbeitest, dann nimm die Qualifizierung des Tabellennamens besser raus:

SQL-Code:
 select dokument from vertragswerk where lfdnr = :lfdnr
Freundliche Grüße

Salve Marabu,

auch das hat es nicht gebracht.

Ich hab im Moment so ein Brett vorm Kopf, ich blick nix mehr.

Gruss

EL

marabu 21. Feb 2007 12:38

Re: Merkwürdiges Problem: SQL Zugriff funktioniert nur übers
 
Nur nochmal zu meinem Verständnis: Du meldest dich mit demselben Benutzernamen an der Datenbank an, mal über einen VPN-Tunnel, mal direkt aus dem Netz, und dein SELECT findet den Datensatz und dann wieder nicht? Ich behaupte, dass du nicht auf dieselbe Tabelle zugreifst.

Nachdenkliche Grüße

emsländer 21. Feb 2007 12:45

Re: Merkwürdiges Problem: SQL Zugriff funktioniert nur übers
 
Zitat:

Zitat von marabu
Nur nochmal zu meinem Verständnis: Du meldest dich mit demselben Benutzernamen an der Datenbank an, mal über einen VPN-Tunnel, mal direkt aus dem Netz, und dein SELECT findet den Datensatz und dann wieder nicht? Ich behaupte, dass du nicht auf dieselbe Tabelle zugreifst.

Nachdenkliche Grüße

Hi Marabu,

der Username ist der selbe. Ist im Connectionstring festgelegt. Alle anderen Operationen funzen ja auch. Nur diese Abfrage ist betroffen, ein Update oder Insert klappt ja.




Gruss

EL

emsländer 21. Feb 2007 16:20

Re: Merkwürdiges Problem: SQL Zugriff funktioniert nur übers
 
Problem gelöst. Ich hatte für diese Abfrage nicht TADOQUERY, sonder TQUERY benutzt. Das funzt auf meiner Entwicklungsmaschine logischerweise problemlos.
:wall: :wall: :wall: Nur halt auf Rechnern ohne SQL-Client nicht. :wall: :wall: :wall:



Gruss

EL


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

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