Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBExpress + ClientDataSet mit DataSetProvider und Blackfish (https://www.delphipraxis.net/135269-dbexpress-clientdataset-mit-datasetprovider-und-blackfish.html)

GHorn 8. Jun 2009 09:18

Datenbank: BlackFish • Version: D2009 • Zugriff über: SQL

DBExpress + ClientDataSet mit DataSetProvider und Blackfish
 
Liste der Anhänge anzeigen (Anzahl: 1)
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 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