Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Registrar/Visualizar por orden de ingreso la bitacora (https://www.clubdelphi.com/foros/showthread.php?t=66949)

sisne 21-03-2010 20:31:21

Registrar/Visualizar por orden de ingreso la bitacora
 
Hola!
Por favor ayuda...
Tengo un Form1 donde selecciono el nivel de cargo y su contrañeña antes de ingresar al FormularioPrincipal, si es correcta la contraseña pues seguidamente coloco este codigo para que me registre el NomUsuario, FechaIngreso,HoraIngreso, etc...en cuanto la contrañesa sea correcta.
Tbitacora es donde si visualizará los usuarios que ingresaron al sistema, TBitacora tiene los campos como ser el codigobitacora 1, 2,3,4,...
DM.TBitacora.Last;
DM.Tbitacora.Edit;
DM.Tbitacora.Insert;
n:=DM.Tbitacora.RecordCount+1;
DM.Tbitacora['CodigoB']:=n;
DM.Tbitacora.FieldByName('CiB').AsInteger:=DM.Tusuario['CiUsuario'];
DM.Tbitacora.FieldByName('NomB').AsString:=DM.Tusuario['NomUsuario'];
DM.Tbitacora.FieldByName('ApePB').AsString:=DM.Tusuario['ApePU'];
DM.Tbitacora.FieldByName('NivelB').AsString:=DM.Tusuario['NivelU'];
DM.Tbitacora.FieldByName('Fec_Ingreso').AsDateTime:=Date;
DM.Tbitacora.FieldByName('Hr_Ingreso').AsDateTime:=Time;
DM.Tbitacora.FieldByName('CodigoU').AsString:=DM.Tusuario['CodigoU'];
Fprincipal.Show;
Luego ingreso al sistemaPrincipal normal....pero no me registra los datos en Tbitacora, solo se registra y se actualiza en cuanto ingreso a ese FormBitacora, sino no entrara a ver quienes ingresaron, no lo registra.
El codigo que puse para ver quienes ingresaron al sistema es
procedure TFprincipal.Bitacora1Click(Sender: TObject);
begin
Fbitacora.ShowModal;
end;
Si hago click para ver la bitacora, recien me actualiza y por otra parte me lo ordena por codigoBitacora 1,10,11,12,13,14,15,16,17,18,19,2,20,21,22,23,24,25,26,27,28,29,3,30,31....4,40,41...5,6,7,8,9
Yo quisiera que me aparezca por orden de fecha ingreso, entonces use un Query(TBtablas), donde programe para que saliera en orden de fechaingreso, pero no me actualizaba, ni por mas que haga click en FormBitacora, por lo menos con Tbitacora al hacer click para ver este formbitacora me aparecia aunque sea en ese orde...

Caral 21-03-2010 20:55:53

Hola
Disculpa pero no entiendo nada.
Me parece que quieres resolver varios problemas a la vez y no te explicas.
Por lo menos yo no entiendo.
Haces un last seguido de un edit y un instert, no me cuadra algo.
Saludos

sisne 21-03-2010 22:19:31

Hola.
Disculpen que me haya extendido tanto.
El problema que tengo es que no me registra lo usuarios que ingresan al sistema, el cual deseo que se guarden en orden de fecha ingreso en la TTabla Bitacora.
El codigo que puse es para que me registre en la TtablaBitacora.
Solo lo actualiza en cuanto ingreso a su respectivo FormBitacora.

Ahora si?

Caral 21-03-2010 22:34:36

Hola
Pues en realidad sigo sin entender.
Veamos:
Tienes una tabla = TtablaBitacora
El código es para que se registre la entrada en esa tabla y muestre el Fprincipal:
Código Delphi [-]
{ esto es innecesario, no veo la razón
DM.Tbitacora.Edit;  
n:=DM.Tbitacora.RecordCount+1;
DM.Tbitacora['CodigoB']:=n;}

DM.TBitacora.Last; // este también lo quitaría, pero no estorba
DM.Tbitacora.Insert;
DM.Tbitacora.FieldByName('CiB').AsInteger:=DM.Tusuario['CiUsuario'];
DM.Tbitacora.FieldByName('NomB').AsString:=DM.Tusuario['NomUsuario'];
DM.Tbitacora.FieldByName('ApePB').AsString:=DM.Tusuario['ApePU'];
DM.Tbitacora.FieldByName('NivelB').AsString:=DM.Tusuario['NivelU'];
DM.Tbitacora.FieldByName('Fec_Ingreso').AsDateTime:=Date;
DM.Tbitacora.FieldByName('Hr_Ingreso').AsDateTime:=Time;
DM.Tbitacora.FieldByName('CodigoU').AsString:=DM.Tusuario['CodigoU'];
DM.Tbitacora.Post;
Fprincipal.Show;
Bien, este codigo inserta la entrada.
Ahora, no veo el interes de que la registre por fecha de ingreso, para eso simplemente se hace una consulta y la muestra por fecha.
Saludos

Casimiro Noteví 21-03-2010 22:35:17

Amigo sisne, bienvenido a clubdelphi, te aconsejo leer nuestra guía de estilo, así podemos entendernos mejor entre todos :)

También es conveniente que para mayor claridad escribas el código entre etiquetas, como ha hecho Caral, por ejemplo:
[code ]
tú código fuente
[/code ]

Sin el espacio que he dejado entre code y el ']', aquí tienes una guía.

ecfisa 22-03-2010 01:55:38

La corrección de Caral, es correcta, ya que incluye el Post necesario para que queden plasmados los usuarios que se registran (que era el problema que presentó sisne).

Ahora suponiendo que queremos añadir cada usuario que se registre:
Las líneas
Código:

DM.TBitacora.Last;
DM.Tbitacora.Insert;

Se pueden simplificar a
Código:

DM.TBitacora.Append;
Saludos.

sisne 22-03-2010 16:58:13

Holas!
Les comento ya solucioné el problemita, y de esta manera.
En TablaBitacora en SQL Server tenia definido los campos FechaIngreso como Date, FechaIngreso,HrIngresgo,HrSalida como DateTime, pero ahora los cambié a String.
Y con la ayuda de ustedes cambié el código a:
Código:

DM.Tbitacora.Insert;
n:=DM.Tbitacora.RecordCount+1;//esto es para contar nro. de usuarios que ingresan...nada relevante...
DM.Tbitacora['CodigoB']:=n;
DM.Tbitacora.FieldByName('CiB').AsInteger:=DM.Tusuario['CiUsuario'];
DM.Tbitacora.FieldByName('NomB').AsString:=DM.Tusuario['NomUsuario'];
DM.Tbitacora.FieldByName('ApePB').AsString:=DM.Tusuario['ApePU'];
DM.Tbitacora.FieldByName('NivelB').AsString:=DM.Tusuario['NivelU'];
DM.Tbitacora.FieldByName('Fec_Ingreso').AsString:=DateToStr(Date);
DM.Tbitacora.FieldByName('Hr_Ingreso').AsString:=TimeToStr(Time);
DM.Tbitacora.FieldByName('CodigoU').AsString:=DM.Tusuario['CodigoU'];
DM.Tbitacora.Post;
Fprincipal.Show;

Y para que me salga la HoraSalidaSistema, cuando hago click en salir del sistema en un boton Salir:
Código:

DM.Tbitacora.Open;
DM.Tbitacora.Last;
DM.Tbitacora.Edit;
DM.Tbitacora.FieldByName('Hr_Salida').AsString:=TimetoStr(time);
DM.Tbitacora.Post;
Application.Terminate;

El resultado es en orden de HoraIngresoSistema.

Gracias a todos!!! No saben estaba hasta muy tarde haciendo esto, cuando el problema no era de gran escala.

Graaaaaaaaacias!!!

Nota:En cuanto a las VB voy aprendiendo...otra vez graaaaaaacias.


La franja horaria es GMT +2. Ahora son las 19:08:44.

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