Ver Mensaje Individual
  #1  
Antiguo 06-05-2014
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: ene 2006
Ubicación: Bogota Colombia
Posts: 187
Reputación: 19
JULIPO Va por buen camino
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.
__________________
No basta con saber es necesario aplicar lo que se sabe, no basta con querer hacer las cosas es necesario hacerlas
Goethe
Responder Con Cita