Club Delphi  
    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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-10-2003
Delphos Delphos is offline
Miembro
 
Registrado: jun 2003
Ubicación: Valencia (España)
Posts: 45
Poder: 0
Delphos Va por buen camino
Controlar el post y edit de un TDBNavigator

Hola foro

Alguien me puede decir como se puede controlar el que no se pueda grabar o editar un registro que no tengan todos los campos rellenados.

Trabajo con un TADOTable, los tipicos DBEdit y un TDBNavigator

Porque no funciona esto

procedure TfrmArticulos.DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
begin
//if (frmPrincipal.TablaArticulos.State = dsInsert) or (frmPrincipal.TablaArticulos.State = dsEdit) then
// begin
if (dbNombre.Text = '') or (dbDescripcion.Text = '') or
(dboCategoria.Text = '') or (dbPrecio.Text = '') or
(dboLocal.Text = '') then
begin
ShowMessage('Registro no guardado: Debe Rellenar todos los campos');
frmPrincipal.TablaArticulos.Cancel;

end;
// end;
end;

Ademas lo que esta comentado es porque no me reconoce la propiedad dsInsert ni dsEdit me dice que variable no declarada.

El codigo de arriba no funciona cuando intento añadir un registro o editar algun existente me dice que no estoy en estado dsInsert o dsEdit.

Se os ocurre algo, porque tendria que volver modificar tres formularios para controlar esto y es un faenon.

Muchas Gracias por adelantado.

Salu2.
Responder Con Cita
  #2  
Antiguo 08-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Creo que el lugar más adecuado para verificar la validez de los datos antes de insertarlos en la base de datos es en el evento OnBeforePost del Dataset.

// Saludos
Responder Con Cita
  #3  
Antiguo 08-10-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Releí la pregunta.

Además de lo que ya te comenté antes, tu código no funciona precisamente porque quitaste la línea que verifica que el DataSet esté en modo de edición o inserción. El error lo provoca el método Cancel.

Para que reconozca las constantes dsInsert y dsEdit debes añadir la unidad DB a la cláusula uses de la unidad en donde esté el código.

// Saludos
Responder Con Cita
  #4  
Antiguo 08-10-2003
sanxpue sanxpue is offline
Miembro
 
Registrado: jul 2003
Posts: 196
Poder: 21
sanxpue Va por buen camino
Código:
Porque no funciona esto

procedure TfrmArticulos.DBNavigator1BeforeAction(Sender: TObject;Button: TNavigateBtn);
begin
//  if (frmPrincipal.TablaArticulos.State = dsInsert) or    (frmPrincipal.TablaArticulos.State = dsEdit) then
//begin
  if (dbNombre.Text = '') or (dbDescripcion.Text = '') or
    (dboCategoria.Text = '') or (dbPrecio.Text = '') or
    (dboLocal.Text = '') then
   begin
      ShowMessage('Registro no guardado: Debe Rellenar todos los campos');
    frmPrincipal.TablaArticulos.Cancel;

end;
// end;
end;
Pues por que en lugar de reconocer

if (dbNombre.Text = '') or (....

deberias de mandar

if (frmPrincipal.TablaArticulos.FieldByName('Nombre').AsString = '') Or (.....
__________________
saludos desde Puebla Mexico..
asanxt@hotmail.com
"como siempre a sus ordenes y siempre con buena cara"
'lolita me excitas, perversa piel de melocotón'
Responder Con Cita
  #5  
Antiguo 08-10-2003
Delphos Delphos is offline
Miembro
 
Registrado: jun 2003
Ubicación: Valencia (España)
Posts: 45
Poder: 0
Delphos Va por buen camino
Vale asunto solucionado.

Muchas gracias de nuevo.

Salu2.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 01:35:18.


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
Copyright 1996-2007 Club Delphi