![]() |
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. |
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 |
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 |
Código:
Porque no funciona esto if (dbNombre.Text = '') or (.... deberias de mandar if (frmPrincipal.TablaArticulos.FieldByName('Nombre').AsString = '') Or (..... |
Vale asunto solucionado.
Muchas gracias de nuevo. Salu2. |
La franja horaria es GMT +2. Ahora son las 23:34:39. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi