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)
-   -   Problemas con Dataset (https://www.clubdelphi.com/foros/showthread.php?t=67156)

alegarreta 01-04-2010 17:45:29

Problemas con Dataset
 
Hola a todos, de antemano gracias a los que amablemente brinden su ayuda. tengo el siguiente codigo en Delphi 6...
procedure TFrmHab.BtnEmpleadoClick(Sender: TObject);
begin
TblImprime.Open;
TblImprime.Edit;
TblImprime.Insert;
TblImprimeNumero.Value:=Edit1.Text;
TblImprime.Post;
TblImprime.Close;
RptContlstBempl.run //Ejecuta un reporte que se hace en Report Smith
end;

al ejecutar el programa y dar click sobre el boton me aparece un mensage de error que dice...
Table1: Dataset not in edit or insert mode

*Lo que deberia de pasar es que hace una consulta a una tabla TblImprime para sacer un reporte de determinado empleado por medio de su Numero de empleado.

a que se debe esto??...

Caral 01-04-2010 18:40:50

Hola
Que es lo que quieres hacer, insertar o editar?.
Editar:
Código Delphi [-]
procedure TFrmHab.BtnEmpleadoClick(Sender: TObject);
begin
TblImprime.Open;
TblImprime.Edit;
TblImprime.FilebyName('Numero').Value:= Edit1.Text;
TblImprime.Post;
TblImprime.Close;
// RptContlstBempl.run  // no se que es esto
end;

Insertar:
Código Delphi [-]
procedure TFrmHab.BtnEmpleadoClick(Sender: TObject);
begin
TblImprime.Open;
TblImprime.Insert;
TblImprime.FilebyName('Numero').Value:= Edit1.Text;
TblImprime.Post;
TblImprime.Close;
// RptContlstBempl.run  // no se que es esto
end;
Saludos

alegarreta 01-04-2010 19:24:34

TblImprime.FilebyName('Numero').Value:= Edit1.Text; //FilebyName no es una propiedad aceptada

Caro 01-04-2010 19:38:00

Cita:

Empezado por alegarreta (Mensaje 358987)
TblImprime.FilebyName('Numero').Value:= Edit1.Text; //FilebyName no es una propiedad aceptada

Hola alegarreta, FieldByName si es una propiedad que tiene el componenete Table, en tu codigo como te dice Caral debes poner o solo Insert (para añadir) o solo Edit(para modificar).

Saluditos

Caro 01-04-2010 19:43:57

Cita:

Empezado por alegarreta (Mensaje 358981)
.............Lo que deberia de pasar es que hace una consulta a una tabla TblImprime para sacer un reporte de determinado empleado por medio de su Numero de empleado.

Hola de nuevo, tu código no esta haciendo ninguna consulta, debes utilizar la propiedad Filter de tu Table:

Código Delphi [-]
  TblImprime.Open;
  TblImprime.Filter := 'Numero =' +Edit1.Text;
  TblImprime.Filtered := True;

Saluditos

Caral 01-04-2010 19:47:17

Hola
Buena observación Caro, no lo vi.
Saludos

alegarreta 01-04-2010 19:52:23

Es decir que deberia de ser algo asi?....

procedure TFrmHab.BtnEmpleadoClick(Sender: TObject);
begin
TblImprime.Open;
TblImprime.Insert;
TblImprime.Filter := 'Numero =' +Edit1.Text;
TblImprime.Filtered := True;
TblImprime.FilebyName('Numero').Value:=Edit1.Text;
TblImprime.Post;
TblImprime.Close;
RptContlstempl.run
end;

end

lo ejecuto con F8 y cuando me sale el error antes mencionado me pone una pflecha verde en la linea TblImprime.Post;

Caral 01-04-2010 19:56:15

Hola
Creo que estas cometiendo varios errores.
El primero es saber que es lo que quieres hacer.
En principio muestras un codigo que inserta o edita.
Posteriormente indicas que quieres hacer una busqueda de un empleado.
Pregunto:
Que es EXACTAMENTE lo que quieres hacer?.
Ya que Caro te hizo un codigo para filtrar y yo para insertar o edtir.
Saludos

alegarreta 01-04-2010 19:59:21

orale pues, tengo un formato hecho en Report Smith, y en el programa tengo una caja de texto donde se captura el numero del empleado (ej 4001) al precionar el boton imprimir debe salir el reporte con la informacion del empleado consultado, perdonen la confucion soy nuevo en Delphi

Caral 01-04-2010 20:03:09

Hola
Aclaro: No uso, ni se usar, Report Smith.
Para hacer un reporte se necesita enlazarlo.
Ninguna de las formas que te hemos indicado sirve para ese fin, lo que hacen es mostrar el dato.
Saludos

alegarreta 01-04-2010 20:05:47

el enlace se hace por medio de un control que se llama TRReport, solamente le das los parametros y lo ejecutas, en el reporte ya estan definidas las relaciones con las tablas pertinentes que al fin son las a las que apunta el Ttable.

Caral 01-04-2010 20:11:34

Hola
Genericamente:
Código Delphi [-]
procedure TFrmHab.BtnEmpleadoClick(Sender: TObject);
begin
 try
   RReport:=TRReport.Create(self);
   TblImprime.Open;
   TblImprime.Filter := 'Numero =' +Edit1.Text;
   TblImprime.Filtered := True;
    RReport.Preview;
   finally
   RReport.Free;
   end;
Saludos

alegarreta 01-04-2010 20:27:13

en ese caso me abriria el reporteador con todos los registros que encuentre la consulta

Caro 01-04-2010 20:28:27

Cita:

Empezado por alegarreta (Mensaje 358995)
orale pues, tengo un formato hecho en Report Smith, y en el programa tengo una caja de texto donde se captura el numero del empleado (ej 4001) al precionar el boton imprimir debe salir el reporte con la informacion del empleado consultado, perdonen la confucion soy nuevo en Delphi

Hola de nuevo, yo tampoco conocía ReportSmith, pero parece que se utilizaba con las versiones antiguas de delphi, si ya tienes enlazado el reporte con tu table TBLImprime, solo debes hacer el filtro y ejecutar tu reporte:

Código Delphi [-]
procedure TFrmHab.BtnEmpleadoClick(Sender: TObject);
begin
  TblImprime.Open;
   TblImprime.Filter := 'Numero =' +Edit1.Text;
   TblImprime.Filtered := True;
   RptContlstBempl.run;
end;

Saluditos

Caro 01-04-2010 20:30:38

Cita:

Empezado por alegarreta (Mensaje 359002)
en ese caso me abriria el reporteador con todos los registros que encuentre la consulta

Si, con todos los que coincidan con Edit1.Text en tu campo Numero.

Saluditos

alegarreta 01-04-2010 20:49:19

Bueno ya me abre el reporte pero no cambia la informacion, es decir segun el numero de empleado que ponga en la caja de texto deveria salir en el reporte pero no lo hace, habra alguna manera de pasar el dato de la caja a un registro en una tabla?, es decir tengo la table Cimp.dbf, la utilizao como filtro que tiene el campo numero, como podria pasar el dato a ese registro para que me filtre entonces cualquier numero de empleado que ingrese en la caja?

alegarreta 01-04-2010 21:03:37

por ejemplo....

TblImprime.Open;
Tblimprime.Fields.FindField('Numero'):=Edit1.Text; <---
TblImprime.Filter := 'Numero =' + Edit1.Text;
TblImprime.Filtered := True;
RptContlstempl.run;

Caral 01-04-2010 21:24:44

Hola
Creo que no muchos conocen de este reporteador.
Pregunto?.
Por que no usas QReport que viene con delphi 6.?.
Saludos

alegarreta 01-04-2010 21:53:40

bueno es un trabajo que herede del antiguo programador, ademas no cuento con el programa en el cd de instalacion no viene, no se si sea por la licencia o algo mas.

en el reporte puse consultas sql pertinentes para el trabajo, lo que me hace falta es solamente saber como puedo pasar el valor de la caja de texto numero al valor de la tabla cimp en el campo numero, cuando se ejecute el reporte el mismo hara la consulta sobre las tablas que participan usanto a cimp como un filtro.

muchas gracias por su paciencia y su ayuda son muy atentos.

Casimiro Noteví 01-04-2010 22:08:21

Creo que ya te ha contestado Caral con lo que quieres, mira su respuesta :)


La franja horaria es GMT +2. Ahora son las 18:50:52.

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