Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   objeto TADODataSet (https://www.clubdelphi.com/foros/showthread.php?t=12127)

Nidia H. Ochoa 06-07-2004 19:56:14

objeto TADODataSet
 
Buen dia...
Mi problema es algo confuso y la verdad es dificil de solucionar creo que tanto como tratar de explicarlo, pero ahi voy...

Tengo una forma que contiene el objeto TADODataSet... este componente lo utilizo para poder conectarlo a un DBGrid el cual contiene datos generados por un Stored Procedure, todo esto es por que no quiero que se quede la conexion abierta mientras se tenga abierta esta forma...

Bueno todo esto se trabaja en servidores... se cuenta con un servidor el cual se le llama Desarrollo (que raro no :p ) y tenemos otro de aplicaciones (mas raro aun :p ).... todo funciona de maravilla cuando se trabaja en Desarrollo pero en cuanto se realizo el traspaso a aplicaciones resulto que al querer abrir el componente para obtener los datos me cierra la pantalla y toda la aplicacion sin ningun motivo aparente, sea revisado el codigo y pues no genera ningun problema...

pondre la parte del codigo donde presenta esto...

creo que es muy largo el codigo espero y lo puedan entender
Nota : cabe mencionar que dentro de ShowMassage('alto') esa es la linea que me cierra toda la aplicacion sin ningun mensaje de error

Código:

procedure TfrmBuscaFPXFecProv.cmdFindClick(Sender: TObject);
  var
        MDBuscarFPs  : TMDBuscaFPXFecProv;  // variable a base de datos
        LSDesde          : String;                          // contiene la fecha inicial para el query
        LSHasta          : String;                          // contiene la fecha final para el query
        LSProvee          : String;                          // bandera del proveedor AS/400
        LSError          : String;                          // mensaje del modulo de datos
        LNError          : Byte;                                // contiene le numero de mensaje para el usuario
begin
        try
          // inicializa variables
          LNError := 0;
          LSError := '';
          LSProvee := 'N';
          // formato de la fecha para el query
          LSDesde := fFGuionSTime(DateToStr(dtpDesdeFec.Date));
          LSHasta := fFGuionSTime(DateToStr(dtpHastaFec.DateTime));
          if cmbProv400.ItemIndex > 0 then
                LSProvee := 'S';
          // crea variable para el manejo de la base de datos
          MDBuscarFPs := TMDBuscaFPXFecProv.Create(Application);
          MDBuscarFPs.adoConexion.Close;
          MDBuscarFPs.adoConexion.Open;
          // crea parametros
          if Fuente.CommandText <> 'Pagos.dbo.SPPSPSBuscaFPsXFecProv' then
          begin
                with fuente.Parameters do
                begin
                  Clear;
                  // crea los parametros para los datos del datagrid
                  CreateParameter('@PMenu',ftString,pdInput,20,'');                        //menu del stored procedure
                  CreateParameter('@PPosProv',ftInteger,pdInput,6,0);                  //posicion del combo de proveedores
                  CreateParameter('@PTipoFind',ftString,pdInput,4,'');                  //tipo de busqueda (criterios con los que cuenta la forma)
                  CreatePArameter('@PFDesde',ftDateTime,pdInput,100,0);                //limite de fecha para busqueda
                  CreateParameter('@PFHasta',ftDateTime,pdInput,100,0);                //limite de fecha para busqueda
                  CreateParameter('@PPosProvee',ftInteger,pdInput,6,0);                //posicion del combo de prov400
                  CreateParameter('@PFlagProv400',ftString,pdInput,1,'N');          //bandera de proveedor 400 especifico
                  CreateParameter('@PMensaje',ftString,pdOutput,100,'');                //mensaje de salida del stored procedure
                end;
          end;

// datos de los parametros conforme al criterio de busqueda

          with fuente do
                begin
                  CommandText := 'Pagos.dbo.SPPSPSBuscaFPsXFecProv';
                  CommandType := cmdStoredProc;
                  Parameters.ParamValues['@PMenu'] := 'Find';
                  Parameters.ParamValues['@PPosProv'] := cmbProv.ItemIndex + 1;  //posicion del combo de proveedores
                if rdbLigada.Checked then // FECHAS Y PROVEEDOR LIGADAS
                  Parameters.ParamValues['@PTipoFind'] := 'L';                  //tipo de busqueda (criterios con los que cuenta la forma)
Parameters.ParamValues['@PFDesde'] := LSDesde;                //limite de fecha para busqueda
                  Parameters.ParamValues['@PFHasta'] := LSHasta;                //limite de fecha para busqueda
                  Parameters.ParamValues['@PPosProvee'] := cmbProv400.ItemIndex;                //posicion del combo de prov400
                  Parameters.ParamValues['@PFlagProv400'] := LSProvee;          //bandera de proveedor 400 especifico
                  Connection := MDBuscarFPs.adoConexion;
                  Close;
                  ShowMessage('alto');
                  Open;
                  ShowMessage('alto');
          end;
        dtsDatos.DataSet := Fuente;
        if fuente.Recordset.RecordCount > 0 then
        // datos para el datagrid
          res(dtsDatos)
        else
          LNError := 1;
        fuente.Connection := nil;
        // desconecta y destruye el modulo de datos
        MDBuscarFPs.adoConexion.Close;
        MDBuscarFPs.adoConexion.Connected := False;
        MDBuscarFPs.Free;
        MDBuscarFPs := nil;
        Case LNError of
                1 : begin
                                Application.MessageBox('No se tiene ningun resultado, favor de modificar su criterio de busqueda', 'Mensaje del Sistema', MB_OK + MB_ICONINFORMATION);
                                dbgFind.DataSource := nil;
                          end;
        end;
  except
          on Err : Exception do
          Application.MessageBox(PChar('La aplicación presenta problemas, Error: ' + Err.Message + '. Favor de informar al Administrador'),'Mensaje del Sistema', MB_IconWarning + MB_Ok);
        end;
  end;

PD. espero que se entienda el codigo... y por otro lado muchas gracias espero y esta incognita se pueda resolver... mil gracias

marcoszorrilla 06-07-2004 22:01:37

Cuando dices que cambias a "Aplicaciones", que quieres decir que copias el ejecutable a aplicaciones y lo lanzas desde ahi?.

Si es así puede ocurrir que falle la conexión con los datos. ¿Como se hace la conexión con la Bd?, No será que se parte que se halla en la carpeta del ejecutable y no acepta el cambio porque no los encuentra......

En fin esperemos que nos des algún dato más para ver si te podemos ayudar.

Un Saludo.

Nidia H. Ochoa 06-07-2004 22:48:12

Gracias ... por el interes ...
Si eso quiero decir con aplicaciones, ya que es donde los usuarios tienen el uso con el sistema, y en desarrollo se realizan las modificaciones del sistema.

y con respecto a la conexion a la base de datos no creo que pase ya que antes de ejecutar esa accion se realizan otras que llenan de datos al formulario...

es algo que no he podido encontrar solucion, no tiene logica para mi, ya que no es un componente nuevo ya que el mismo sistema cuenta con otras formas donde se trabaja el mismo objeto y en esas se comporta normal.

el codigo que envie contiene la conexion que realiza y la generacion de parametros considero que es todo lo que se requiere para mostrar los datos en el DBGrid...

asi que sigo con :confused: gracias de antemano...


La franja horaria es GMT +2. Ahora son las 08:17:40.

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