Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   crear componentes dbexpress en hilos de ejecucion (https://www.clubdelphi.com/foros/showthread.php?t=85793)

JULIPO 06-05-2014 14:38:11

crear componentes dbexpress en hilos de ejecucion
 
reciban un cordial saludo.

estoy desarrollando un aplicativo en delphi xe4 con base de datos mysql, el programa crea varios hilos de ejecucion y en cada hilo se crean componentes sqlconnection, datasetprovider, clientdataset, etc.
Código Delphi [-]
 sqlconnection1:=TSQLConnection.Create(nil);
  sqlconnection1.DriverName:='MySQL';
  sqlconnection1.Params.Append('DriverName=MySQL');
  sqlconnection1.Params.Append('DriverUnit=Data.DBXMySQL');
  sqlconnection1.Params.Append('DriverPackageLoader=TDBXDynalinkDriverLoader,DbxCommonDriver180.bpl');
  sqlconnection1.Params.Append('DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Dat  a.DbxCommonDriver,Version=18.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b');
  sqlconnection1.Params.Append('MetaDataPackageLoader=TDBXMySqlMetaDataCommandFactory,DbxMySQLDriver18  0.bpl');
  sqlconnection1.Params.Append('MetaDataAssemblyLoader=Borland.Data.TDBXMySqlMetaDataCommandFactory,Bo  rland.Data.DbxMySQLDriver,Version=18.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b');
  sqlconnection1.Params.Append('LibraryName=dbxmys.dll');
  sqlconnection1.Params.Append('LibraryNameOsx=libsqlmys.dylib');
  sqlconnection1.Params.Append('VendorLib=LIBMYSQL.dll');
  sqlconnection1.Params.Append('VendorLibWin64=libmysql.dll');
  sqlconnection1.Params.Append('VendorLibOsx=libmysqlclient.dylib');
  sqlconnection1.Params.Values['HostName']:=host2;
  sqlconnection1.Params.Append('Database=$$$$$$$') ;
  sqlconnection1.Params.Add('User_Name=xxxxxxx');
  sqlconnection1.Params.Add('Password=$$$$$$$');
  sqlconnection1.LoginPrompt:=False;
  sqlconnection1.AfterConnect:=sqlconnection1afterconnect;
  sqlconnection1.AfterDisconnect:=sqlconnection1afterdisconnect;

creamos los otros componentes

Código Delphi [-]
hactualiza:=TSQLDataSet.Create(nil);
  hactualiza.SQLConnection:=sqlconnection1;
  hactualiza.CommandType:=ctQuery;
  hactualiza.CommandText:='Select * from actualiza';
  datahactualiza:=tdatasetprovider.Create(nil);
  datahactualiza.DataSet:=hactualiza;
  chactualiza:=Tclientdataset.Create(nil);
  chactualiza.SetProvider(datahactualiza);
 //chactualiza.AfterPost:=chactualizaafterpost;

cuando abrimos los clientdataset funciona bien pero cuando solicitamos un refresh genera un error diciendo que no tiene datasetprovider asignado.

creo que me falta algo en la creacion de los componentes.

pacopenin 06-05-2014 20:49:16

Hola.

Yo siempre he definido las claves primarias en los campos del clientdataset y en el datasetprovider pongo la propiedad UpdatedMode como upWhereKeyOnly.

A ver si te sirve,

JULIPO 06-05-2014 20:53:30

Perdona mi ignorancia
 
Como hago para definir las claves primarias en el client data set

pacopenin 06-05-2014 21:06:29

Perdón, no es en el clientdataset, es en el SQLDataSet.

Prueba así :


JULIPO 06-05-2014 22:50:29

Gracias por tu respuesta
 
El tema es que estoy trabajando en dbexpress y el ejemplo que colocas veo es en zeos, aplica de la misma manera para estos componentes

pacopenin 06-05-2014 23:27:18

Es algo similar, por eso lo puse. No tengo ningún proyecto disponible con dbexpress.


La franja horaria es GMT +2. Ahora son las 19:24:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi