![]() |
Delphi-Version: XE8
Not-Abfragewird 2mal ausgeführt
Liste der Anhänge anzeigen (Anzahl: 1)
Hi zusammen
Eben hab ich ein seltsames Problem etdeckt; zumindest hab ich keine Erklärung dafür und weiss deshalb auch nicht, wo ich den Fehler suchen könnte. Beim Aufstarten wird erstmal die Createmethode des Datenmoduls aus dem OnCreateEvent des Hauptformulars aufgerufen:
Delphi-Quellcode:
An der bezeichneten Stelle wird die Booleanfunktion aufgerufen:
procedure TFDMySQLDml.DataModuleCreate(Sender: TObject);
var LIndent : String; begin LIndent := ' - '; CM_First.ProcedureReport.Add('PROCEDURE TFDMySQLDml.DataModuleCreate'); CM_First.ProcedureReport.Add('--------------------------------------'); FQueryResultList := TObjectList.Create; TPicture.RegisterFileFormat('NEF','NEF Format',TWICImage); FReportlist := TStringlist.Create; FSessionVarList := TStringlist.Create; FCategoryBildList := TDataObjectList<TQueryResultClass>.Create(); FCategoryList := TDataObjectList<TQueryResultClass>.Create(); FPathList := TStringList.Create; FMySQLCorrespondent := TMySQLCorrespondent.Create(Self); // TFDMySQLDml FHost := 'localhost'; FDataBase := 'contentmasterdata'; FServerDB := 'performance_schema'; FPort := '3306'; if not DefineContentmasterConnection then //<== begin; ShowMessage(' Die Verbindung konnte nicht hergestellt werden'); // An dieser Stellle muss geeignet reagiert werden können end; FPerformanceSchemaTables := TStringList.Create; ShowCharactersets; //TFDMySQLDml Muss nach TMysqlkorrespondent verlagert werden GetMaxAllowedPacket; end;
Delphi-Quellcode:
Anschliessend kehrt die Programmfunktion zurück und überspringt korrekterweise die Showmessage-Anweisung - die Verbindung ist also hergestellt.
function TFDMySQLDml.DefineContentmasterConnection: Boolean;
var LIndent : String; begin if (FHost <> 'localhost') or (FDataBase <> 'contentmasterdata') then Exit; LIndent := ' - '; FDConnectionMySQL.Close; FDConnectionMySQL.Params.Clear; FDConnectionMySQL.Params.Add('DriverID=MySQL'); FDConnectionMySQL.Params.Add('Server=' + FHost); FDConnectionMySQL.Params.Add('Port=' + FPort); FDConnectionMySQL.Params.Add('Database=contentmasterdata'); FDConnectionMySQL.Params.Add('User_Name=root'); FDConnectionMySQL.Open; Result := True; end; Im weiteren Verlauf wird ShowCharactersets und MaxallowedPacket aufgerufen. Das Problem ist: DefineContentmasterConnection liefert False zurück! Inzwischen vermute ich meine Verbindungsdefinitionen als Ursache. Im Anhang ein Jpeg der OI-Einstellungen der Connection-Komponente: Ansonsten: Was mache ich falsch? Gruss Delbor |
AW: Not-Abfragewird 2mal ausgeführt
Der Rückgabewert von DefineContentmasterConnection ist undefiniert vor dem Exit. Möglicherweise ist das das Problem?
Delphi-Quellcode:
function TFDMySQLDml.DefineContentmasterConnection: Boolean;
var LIndent : String; begin Result := False; if (FHost <> 'localhost') or (FDataBase <> 'contentmasterdata') then Exit; .. Result := True; end; |
AW: Not-Abfragewird 2mal ausgeführt
Hi zusammen
@Bra: Ich hab das Result := False; mal eingefügt. Allerdings hatte ich noch einen kleinen Test vor:
Delphi-Quellcode:
Vorgängig hatte ich meinen Funktionsaufruf deaktiviert:
procedure TServerInfoFrame.Button2Click(Sender: TObject);
var ConnOk : String; begin if FDMySQLDml.FDConnectionMySql.Connected then ConnOK := 'FDMySQLConnection := True;' else ConnOK := 'FDMySQLConnection := False;'; Showmessage(ConnOK); end;
Delphi-Quellcode:
Die da festgelegte Verbindungsdefinition wurde also nicht ausgeführt.
// if not FDMySQLDml.DefineContentmasterConnection then ;
// begin; // ShowMessage(' Die Verbindung konnte nicht hergestellt werden'); // // An dieser Stellle muss geeignet reagiert werden können // end; //// FDMySQLDml.DefineContentmasterConnection; Jetzt gab ConnOK True zurück. Dabbei wurden offensichtlich die Definitionen aus dem OI verwendet. Nicht ganz verstanden habe ich, wieso meine eigen Funktion False zurückgibt, da ich an Result ja explizit True zugewiesen habe. Gruss Delbor |
AW: Not-Abfragewird 2mal ausgeführt
Zitat:
|
AW: Not-Abfragewird 2mal ausgeführt
Hi Uwe Raabe
Irgendwie vermutete ich schon, dass ich die Felder im OI allesamt leeren müsste, um eine temporäre Verbindungsdefinition verwenden zu können, war mir dessen aber alles andere als sicher. Gruss Delbor |
AW: Not-Abfragewird 2mal ausgeführt
Dann lass doch den ganzen OI außen vor und erzeuge Deine Connection usw. im Code.
Dann weißt Du auch selbst ganz genau welche Propertys Du wie eingestellt hast. Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 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-2025 by Thomas Breitkreuz