Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #12  
Antiguo 27-04-2012
nextor nextor is offline
Miembro
 
Registrado: abr 2010
Posts: 31
Poder: 0
nextor Va por buen camino
Ejemplo basico de Threads con JEDI

Buen dia Compañeros
voy a publicar un poco de los Threads con JEDI, a lo mejor a alguien le sirve...

bueno voy a asumir que tienen instaldo los componentes JEDI tanto en JCL como JVCL. sino se lo pueden bajar de http://www.delphi-jedi.org/.

voy a usar SQL Server con ODBC

1. en la pestaña de Jv Threading, pueden econtrar los componenetes relacionados.
2. voy a utilizar el componente TJvThread
3. una vez puesto el componente programo la ejecusion del Thread:

Código Delphi [-]
procedure TFrmProcesar.JvThreadExecute(Sender: TObject; Params: Pointer);
var
  // esta variables es para darle una sesion al thread
  Ses: TSession;
  // esta variable es para crear la conexion a la DB
  db: TDatabase;
  // esta variables es para la llamada al stored procedure
  sp: TStoredProc;

begin

    // seteo  las variables
    Ses := TSession.Create(JvThreadDB);
    db := TDatabase.Create(JvThreadDB);
    sp := TStoredProc.Create(JvThreadDB);

    try
    // configuracion de la sesion
      Ses.SessionName := 'SessionDyn';
      Ses.KeepConnections := true;
      Ses.Active := true;
      
      // configuracion de la conexin a la DB
      db.Name := 'DBTh';
      db.SessionName := Ses.SessionName;
      db.DatabaseName := 'DBThread';
      db.DriverName := 'SQL Server';
      db.LoginPrompt := False;
      
      // parametros para la conexion a la DB
      // estoy usando ODBC con SQL Server
      db.Params.Values['DATABASE NAME'] := 'nombreBaseDatos';
      db.Params.Values['USER NAME'] := 'usuarioBaseDatos';
      db.Params.Values['ODBC DSN'] := 'nombreDSNODBC';
      db.Params.Values['PASSWORD'] := 'passwordBaseDatos';
      db.Params.Values['SCHEMA CACHE SIZE'] := '8';
      db.Params.Values['SQLQRYMODE'] := 'SERVER';
      db.Params.Values['LANGDRIVER'] := '';
      db.Params.Values['SQLPASSTHRU MODE'] := 'NOT SHARED';
      db.Params.Values['SCHEMA CACHE TIME'] := '-1';
      db.Params.Values['MAX ROWS'] := '-1';
      db.Params.Values['BATCH COUNT'] := '200';
      db.Params.Values['ENABLE SCHEMA CACHE'] := 'FALSE';
      db.Params.Values['SCHEMA CACHE DIR'] := '';
      db.Params.Values['ENABLE BCD'] := 'FALSE';
      db.Params.Values['ROWSET SIZE'] := '20';
      db.Params.Values['BLOBS TO CACHE'] := '64';
      db.Exclusive := true;
      db.KeepConnection := True;

      sp.SessionName := Ses.SessionName;
      sp.DatabaseName := db.DatabaseName;
      
      // Nombre del stored procedure
      sp.StoredProcName := 'sp_procesar;1';
      sp.Prepare;
      
      
      // poner parametros al stored procedure
      sp.ParamByName('@parametro1').AsInteger := 'valor1';
      sp.ParamByName('@parametro2').AsString := 'valor2';
      sp.ParamByName('@parametro3').AsInteger := 'valor3';
      
     // ejecusion del stored procedure
        try
          sp.ExecProc;
        except
          TFrmProcGrps(Params).ReturnVal := -2;
          raise;
        end;
        
        // cierro la sesion y la conexion
      db.Close;
      Ses.Close;
    finally
      FreeAndNil(IniConf);
      FreeAndNil(sp);
      FreeAndNil(db);
      FreeAndNil(Ses);
    end
end;

// y por ultimo en un bonto pongo lo siguiente
procedure TFrmProcGrps.BtnStartClick(Sender: TObject);
Begin

   // esto es el componenete JvWaitingGradient es como un gift de progreso

  JvWaitingGradient1.Visible := True;
  JvWaitingGradient1.Active := True;

  // empieza la ejecucion del thread              
  JvThreadDB.Execute(Self);
  // con esto la pantalla no se queda blanqueada
 //
  while not JvThreadDB.Terminated do begin
    Sleep(100);
    Application.ProcessMessages;
 end;
 Sleep(500);
// una vez que haya terminado el stored procedure
//paro gift
  JvWaitingGradient1.Visible := false;
  JvWaitingGradient1.Active := False;


end;

Esto es todo compañeros se que es un ejemplo muy simple pero espero que a alguien le pueda servir y tambien espero que los demas foristas nos den sus coments y/o sugerencias para que todos aprendamos de todos

Gracias
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Evitar que la propiedad de un componente quede en blanco Faust OOP 2 08-05-2010 00:50:49
insertar al final de la tabla, sin que me los ponga hantes de los que ya estan insert sakuragi SQL 2 12-08-2005 22:32:12
Enable:=False; Pero sin que se me ponga gris. nicolasdom Varios 4 13-01-2005 16:43:35
hay alguna funcion en delphi que te ponga los puntos a los miles y millones?... soyhugo Varios 1 24-02-2004 20:52:11
Evitar listados con Campos en blanco? kia Impresión 5 18-10-2003 13:00:31


La franja horaria es GMT +2. Ahora son las 01:14:39.


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