PDA

Ver la Versión Completa : objeto TADODataSet


Nidia H. Ochoa
06-07-2004, 19:56:14
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


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...