Hi zusammen
In der Createprozedure meiner Mainform hab ich 2 Aufrufe:
Delphi-Quellcode:
ServerInfoFrame1.CatalogInformation;
Serverinfoframe1.TableInformation('contentmasterdata');
Beide Methoden tun problemlos, was sie sollen:
Delphi-Quellcode:
procedure TServerInfoFrame.TableInformation(Catalog: string);
var LIndent : String;
begin
LIndent := ' - ';
Self.LBxTableNames.Items.AddStrings(FDMySQLDml.Contentmastertables);
FDMySQLDml.FDConnectionMySql.GetTableNames(Catalog, '', '', FTablelist);
if FTablelist.Count > 0 then
begin
Memo1.Lines.Add('TServerInfoFrame.TableInformation / '+ Catalog);
Memo1.Lines.Add('FDMySQLDml.FDConnectionMySql.DatabaseName' + FDMySQLDml.FDConnectionMySql.Params.Database);
Memo1.Lines.AddStrings(FTablelist)
end
else
begin
Memo1.Lines.Add('Keine Tabellen-Angaben zu '+Catalog+' vorhanden!');
Memo1.Lines.Add('');
end;
end;
und der Getter des Propertys FDMySQLDml.Contentmastertables:
Delphi-Quellcode:
function TFDMySQLDml.GetContentmasterTables: TStringlist; // Wird nach TMySQL verlegt
var SqlString : String; I: integer;
begin
SqlString := 'SHOW TABLES';
FDQueryMain.Open(SqlString);
FDQueryMain.First;
while not FDQueryMain.Eof do
begin
FContentmastertables.Add(FDQueryMain.Fields.Fields[0].AsString);
FDQueryMain.Next;
end;
FDQueryMain.Close;
Result := (FContentmastertables);
end;
Trotzdem erhalte ich die Fehlermeldung:
Zitat:
Im Projekt ContentMasterDXE8.exe ist eine
Exception der Klasse EMySQLNativeException mit der Meldung '[FireDAC][Phys][
MySQL] Table 'contentmasterdata.kategorien_tabelle' doesn't exist' aufgetreten.
Die entsprechende Abfrage:
Delphi-Quellcode:
procedure TFDMySQLDml.SelectCategoryRecords;
var SQLString: UTF8String; Zero: Boolean;
QueryCategory : TQueryResultClass; LCategory : String; LCategoryKey : Integer;
begin
if FCategoryList.Count>0 then
FCategoryList.Clear;
if assigned(FOnStartCategoryQuery) then
begin
Zero := True;
FOnStartCategoryQuery(Self, Zero);
end;
SQLString := 'SELECT Kath_ID as Kath_ID, Kategorie as Kategorie FROM kategorien_tabelle';
FDQueryMain.SQL.Text := SQLString;
FDQueryMain.Open; //<==Kategorientabelle wird nicht gefunden `` ` ` ``
FDQueryMain.First;
while not FDQueryMain.Eof do
begin
QueryCategory := TQueryResultClass.Create(Self);
QueryCategory.KategoryTabelle.Kath_Id := FDQueryMain.FieldByName('Kath_ID').AsInteger;
QueryCategory.KategoryTabelle.Kategory := UTF8ToUnicodeString(FDQueryMain.FieldByName('Kategorie').AsString);
FCategoryList.Add(QueryCategory);
if assigned(FOnFoundedCategory) then
begin
LCategory := QueryCategory.KategoryTabelle.Kategory;
LCategoryKey := QueryCategory.KategoryTabelle.Kath_Id;
FOnFoundedCategory(Self,LCategory,LCategoryKey);
end;
FDQueryMain.Next;
end;
// CM_First.CmbxFrame1.ComboBox1.Items.Add(FCategoryList.CurrentRecord.KategoryTabelle.Kategory);
FDQueryMain.SQL.Clear;
FDQueryMain.Close;
end;
Wie aus dem Anhang ersichtlich, tun beide Abfragemethoden (die von Firedac und die Direktabfrage) genau, was sie sollen und listen die gesuchten Tabellen auf - inklusive der schlussendlich vermissten 'contentmasterdata.kategorien_tabelle'.
Was soll das, bzw. was mache ich falsch?
Gruss
Delbor