Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TClientDataSet mit TDataSetProvider verbinden (https://www.delphipraxis.net/107843-tclientdataset-mit-tdatasetprovider-verbinden.html)

flobbie 3. Feb 2008 11:15

Datenbank: MySQL • Version: 5 • Zugriff über: dbexpress

TClientDataSet mit TDataSetProvider verbinden
 
Hi,
ich versuche gerade eine Verbindung mit meinem MySQL-Server aufzubauen. Scheitere aber daran, ein TClientDataSet mit einem TDataSetProvider zu verbinden.


Delphi-Quellcode:
//DataSetProvider
provider := TDataSetProvider.Create(Self);
provider.DataSet := query;
provider.Constraints := true;
provider.Exported := true;
provider.Name := 'mysqlProvider';
provider.ResolveToDataSet := false;
provider.UpdateMode := upWhereAll;

//DataSet
dataset := TClientDataSet.Create(Self);
dataset.Active := false;
dataset.AutoCalcFields := true;
dataset.ObjectView := true;
dataset.StoreDefs := false;
dataset.ReadOnly := false;
dataset.AggregatesActive := false;
dataset.DisableStringTrim := false;
dataset.FetchOnDemand := true;
dataset.ProviderName := provider; //Es geht hauptsächlich um diese Zeile. Diese Zeile wird beim Ausführen immer rot eingefärbt.
dataset.Name := 'mysqlDataSet';
dataset.Active := true;
Wenn ich versuche das auszuführen, bekomme ich immer folgende Fehlermeldung:
[Pascal Fehler] Unit1.pas(92): E2010 Inkompatible Typen: 'string' und 'TDataSetProvider'

Aber warum geht es denn nicht. Ich habe auch ein TSQLConnection und ein TSQLQuery. Wenn ich die so verbinde meckert er nicht. Er meckert nur bei dem.
Wisst ihr woran es liegt.
Vielen Dank für eure Hilfe.
Mit freundlichen Grüßen
Flobbie

mashutu 3. Feb 2008 12:00

Re: TClientDataSet mit TDataSetProvider verbinden
 
1. die fragliche Zeile erfordert einen String; den Namen des providers und nicht das Objekt eines Providers.

2.) Generell: Warum arbeitest du an der Stelle mit einem TClientDataset?

Tdatasource und TTable oder TQuery wuerde ich nehmen.

flobbie 3. Feb 2008 12:16

Re: TClientDataSet mit TDataSetProvider verbinden
 
Hi,
danke für deine Antwort.

Delphi-Quellcode:
//SQL Verbindung
mysql := TSQLConnection.Create(Self);
mysql.Connected := false;
mysql.ConnectionName := 'OpenMySQL50';
mysql.DriverName := 'OpenMySQL50';
mysql.LoginPrompt := false;
mysql.Params.Values['DriverName'] := 'OpenMySQL50';
mysql.Params.Values['HostName'] := 'IP';
mysql.Params.Values['Database'] := 'datenbank';
mysql.Params.Values['User_Name'] := 'username';
mysql.Params.Values['Password'] := 'passwort';
mysql.Params.Values['BlobSize'] := '-1';
mysql.GetDriverFunc := 'getSQLDriverMYSQL50';
mysql.KeepConnection := true;
mysql.LibraryName := 'dbxopenmysql50.dll';
mysql.LoadParamsOnConnect := false;
mysql.Name := 'mysqlVerbindung';
mysql.VendorLib := 'libmysql.dll';
mysql.Connected := true;
mysql.Open;

//Query
query := TSQLQuery.Create(Self);
query.Active := false;
query.MaxBlobSize := 0;
query.ObjectView := false;
query.ParamCheck := true;
query.SQLConnection := mysql;
query.SQL.Text := 'SELECT en FROM en_de WHERE id=1';
query.GetMetadata := false;
query.Name := 'mysqlQuery1';
query.NumericMapping := false;
query.Active := true;
Ich habe so angefangen.

Delphi-Quellcode:
//DataSource
datasource := TDataSource.Create(Self);
datasource.Enabled := false;
datasource.AutoEdit := true;
datasource.Name := 'mysqlDataSource';
datasource.DataSet := query;
datasource.Enabled := true;

//Englischer Text
texteng := TDBText.Create(Self);
texteng.Enabled := false;
texteng.DataField := 'en';
texteng.DataSource := datasource;
texteng.Align := alNone;
texteng.AlignWithMargins := false;
texteng.AutoSize := true;
texteng.Height := 57;
texteng.Left := 104;
texteng.Top := 96;
texteng.Width := 121;
texteng.Enabled := true;
mysql.Close;
mysql.Free;
So bekomme ich keine Fehlermeldung mehr. Aber er zeigt nichts an.

Ich habe dann nochmal ein TDBText im Formular erstellt und versucht es mit
Delphi-Quellcode:
DBText1.DataSource := datasource;
mit Inhalt zu füllen, aber es bleibt auch leer. Warum funktioniert das denn schon wieder nicht.

Warum kann das nicht einfach mal funktionieren?
Ich danke euch für eure Hilfe.
Mit freundlichen Grüßen
Flobbie


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