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)
-   -   Validar Registro de Datos en una BD (https://www.clubdelphi.com/foros/showthread.php?t=92439)

Franfarnaz 29-10-2017 17:41:22

Validar Registro de Datos en una BD
 
Hola.

Soy nuevo en el foro y he revisado varias post frente a este tema pero después de una larga ausencia de mi parte en delphi, veo que algunas cosas han cambiado y me encuentro atorado en esto que describo a continuación: Tengo un form con varios campos (TDBEdit y TDBLookupComboBox), quiero verificar que si existen campos en blancos, la instrucción de inserción en la base de datos no se ejecute hasta que todos los campos estén diligenciados. he superado el problema en cuanto a validar los TDBEdit pero los TDBLookUpComboBox me da un error. El código que uso es sencillo pero como dije solo me valida los DBEdit.

for x := 0 to ComponentCount - 1 do

if ((Components[x] is TDBEdit) or (Components[x] is TDBLookupComboBox)) then begin
if (((Components[x] as TDBEdit).Text = '') or ((Components[x] as TDBLookupComboBox).Text = '')) then
begin
ShowMessage ('Campos sin diligenciar' +' '+ QuotedStr(Components[x].Name) );
(Components[x] as TDBEdit).SetFocus;

end
end else begin

TInsercion.BtnClick(nbInsert);
end;

De igual forma agradezco si podrían ayudarme en validar si el dato es numero o texto. de antemano gracias y disculpas si he repetido el tema, pero no encontré información concreta frente a este inconveniente.

Casimiro Notevi 29-10-2017 22:44:50

Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración :)


Y recuerda poner los tags al código fuente, ejemplo:



Gracias :)

hal1967 30-10-2017 14:03:56

Frank algo que no tiene que ver con BB DD. Es "if" que colocaste debería estar separado en dos partes dado que estás tratando de evaluar el mismo objeto como dos clase distintas (en principio no debe haber problemas porque ambas deben descender de algo como TCustomEdit, pero el operador "as" es bastante quisquilloso).

En todo caso separa

en lugar de

if A or B then


algo como

if A then.....
if B then....


Tu problema es en el segundo "if"


Cita:

Empezado por Franfarnaz (Mensaje 522113)

for x := 0 to ComponentCount - 1 do

if ((Components[x] is TDBEdit) or (Components[x] is TDBLookupComboBox)) then begin
if (((Components[x] as TDBEdit).Text = '') or ((Components[x] as TDBLookupComboBox).Text = '')) then


Franfarnaz 30-10-2017 16:14:49

Gracias por su ayuda y comentarios...pues termine resolviendo el problema sin evaluar los componentes, asi que use una comprobacion directa a la vieja usanza.

Código Delphi [-]
if ( (_Tipo_Documento.KeyValue <> null) and (Documento.Text <> '') and (_Nombre.Text <> '') 
and (_Apellido.Text <> '') and (_Genero.KeyValue <> null) and (_Edad.Text <> '') 
and (_Nombre_Acudiente.Text <> '') and (_Apellido_Acudiente.Text <> '') and (_Telefono.Text <> '') 
and (_Direccion.Text <> '') and (_Discapacidad.KeyValue <> null)  ) then begin

       TInsercion.BtnClick(nbInsert);
       ShowMessage ('Datos Registrados');

      end else begin


       ShowMessage ('Todos los Campos Deben Ser Diligenciados');

      end;

y con eso me funciono bien, en cuanto a lo de la validación en el evento keypress de datos lo especifique así:

Código Delphi [-]
procedure TForm2._TelefonoKeyPress(Sender: TObject; var Key: Char);
begin

  if not(Key in ['0'..'9',#8]) then
  begin
    Key:=#0;
    ShowMessage('Solo se Admite Numeros, Sin Punto ni Comas');
  end;


end;


La franja horaria es GMT +2. Ahora son las 00:21:15.

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