Hallo,
ich habe ein Projekt von D2007 nach D2009 portiert. Beide Programme
benutzen BlackFishSQL in der aktuellsten Version (DataBasePack #4).
Nach den üblichen Umstellungen (
UniCode usw) taucht folgendes Problem
in D2009 auf, dass ich in D2007 nicht habe:
Ich versuche eine größere Tabelle per SELECT zu lesen. Die jeweiligen
Feldgrößen variieren von VARCHAR(8) bis VARCHAR(600). Lese ich Felder,
die in der Summe 4730 Zeichen lang sind, gibts keine Probleme. Bei
4733 Zeichen allerdings kommt die
Exception beim Zuweisen des Providers
zum ClientDataset.
Delphi-Quellcode:
var
MySQLDataSet1: TSQLDataSet;
MyDataSource1: TDataSource;
MyDSProvider1: TDataSetProvider;
MyClientDS1: TClientDataSet;
...
...
...
procedure TTableView.ExecuteSelectSQL;
// Ein SQL-Select-Statement ausführen:
begin
MyClientDS1.Active := False;
MySQLDataSet1.Active := False;
MySQLDataset1.CommandType := ctQuery;
MySQLDataSet1.DbxCommandType := '
Dbx.SQL';
MySQLDataSet1.CommandText := Trim(Memo1.Text);
// z.B.: 'select * from job_details'
MyDSProvider1.DataSet := MySQLDataSet1;
MyClientDS1.ProviderName := MyDSProvider1.
Name;
try
// ************
MyClientDS1.Data := MyDSProvider1.Data;
// <--- hier knallt's
// ************
MyDataSource1.DataSet := MyClientDS1;
MySQLDataset1.DataSource := MyDataSource1;
DBGrid1.DataSource := MyDatasource1;
MyClientDS1.Active := True;
MySQLDataSet1.Active := True;
except
on E:
exception do
begin
// Fehlermeldung anzeigen:
ED_StatusBar1.Color := clRed;
ED_StatusBar1.Font.Color := clWhite;
ED_StatusBar1.Text := '
Error executing SQL statement: '+E.
Message;
Application.ProcessMessages;
end;
end;
end;
Der selbe Fehler kommt, wenn ich die Tabelle in der
IDE lese ( Komponenten
Active = True usw) und wenn ich im Daten-Explorer durch Doppelklick versuche,
die Tabelle einzulesen. Gehe ich an dieser Stelle auf 'Tabelle ändern', werden
keine Felder angezeigt.
Offensichtlich gibt's ein Längen- bzw Anzahl-Zeichen-Problem. Ist euch
dazu etwas bekannt oder habt ihr Tips? Wie gesagt: gleiche Tabelle, gleicher
BF-Dienst, gleicher Quellcode. Nur D2007 bzw. D2009.
Ich habe noch einen ScreenShot mit der Fehlermeldung des Data Explorers angehängt.
Danke für jeden Tip!!!
Gruß,
Gerald