Ver Mensaje Individual
  #1  
Antiguo 09-06-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Reputación: 0
DiegoPucho Va por buen camino
Unhappy Problema con Código y Guardar en base de datos

Hola a todos de ante mano, para seguir preguntando cosas sencillas pero me trabo y no se como conseguir lo que quiero.
Les cuento que estoy aprendiendo y hace muy poco que estoy con delphi, lo que encuentro sumamente interesante. Lo que espero que me tengan paciencia. También les cuento que es por voluntad propia y no tengo ha nadie que le pueda preguntar, por supuesto los tengo a ustedes.

Aquí el problema, Tengo un Form de productos donde guardo en una base de datos (creo que es plana, se guarda en la maquina)... tengo edit y más.

1° Ordenar Código. (esta bien lo que hice?) Código donde intento guardar en base de datos.
Código Delphi [-]
procedure TTFormNuevoProducto.BtnGuardarClick(Sender: TObject);
begin
  With FrmModArt.QProductos do
   begin
    if Locate('Codigo',EditCodigo.Text,[]) then  //Si Codigo se duplica manda mensaje.
  begin
    MessageDlg('Este Código de Producto ya existe.', mtWarning, [mbOK], 0);
    EditCodigo.SetFocus;
    EditCodigo.Color:=clSkyBlue;
  end
  else
    if Trim(EditDescripcion.Text) = '' then     //Si Descripcion esta vacio manda mensaje.
  begin
    ShowMessage('Debe Ingresar la Descripción del Producto.');
    EditDescripcion.SetFocus;
    EditDescripcion.Color:=clSkyBlue;
  end
  else
    if Trim(EditCodigo.Text) = '' then          //Si Codigo esta vacio manda mensaje.
  begin
    ShowMessage('Debe Ingresar un Código del Producto.');
    EditCodigo.SetFocus;
    EditCodigo.Color:=clSkyBlue;
  end
 else
  begin
   FrmModArt.QProductos.Insert;   ///Acá abre base de Datos para Insertar.
   try
   FrmModArt.QProductos.FieldByName('Codigo').Text:= EditCodigo.Text;
   FrmModArt.QProductos.FieldByName('Descripcion').Text:= EditDescripcion.Text;
   ...
   FrmModArt.QProductos.FieldByName('idProveedor').Text:= ComboBoxProveedor.KeyValue; ///   acá el 2° problema.
   FrmModArt.QProductos.FieldByName('FechaCompra').Text:= sDateEdit1.Text;  /// acá el 3° problema.
   ...
   FrmModArt.QProductos.Post; /// acá se guarda los datos.
   TFormNuevoProducto.EditCodigo.Clear;
   TFormNuevoProducto.EditDescripcion.Clear;                                   /// acá se borra los datos que contiene los componentes.
   TFormNuevoProducto.ComboBoxProveedor.KeyValue := '';
   ...
   TFormNuevoProducto.sDateEdit1.Clear;
   ...
   TFormNuevoProducto.EditCodigo.SetFocus; /// Le devuelve el focus al edit Código.
   except
    on E:Exception do
     begin
      MessageDlg('ErrorN°: 175 ' + E.Message, mtWarning, [mbOK], 0);
     end;
   end;
   end;
 end;
end;
2° en el ComboBoxProveedo y 3° sDateEdit1.Text en cuando intento guardar (sin proveedor y sin fecha) me sale mensaje de error Null.
Aqui mensaje completo del 2°:
Cita:
Could not convert variant of type (Null) into type (OleStr)
Lo que he intentado es por código algo así. Ya q el problema es que no me deja guardar Null (vació) en mi tabla. y en el 3° no me guarda _/_/_.
Código Delphi [-]
if Trim(ComboBoxProveedor.Text) = '' then
    begin
     FrmModArt.QProductos.FieldByName('idProveedor').Value := NULL;

     FrmModArt.QProductos.FieldByName('idProveedor').Text:= ComboBoxProveedor.KeyValue;
    end;
Quiero decirle que SI esta vacío ENTONCES ... haga lo primero SINO lo guarde... (y no puedo hacer eso) Es muy pobre MyCodigo...
Y en el 3° hacer algo similar...
Desde ya muchas gracias y espero no molestarlos con mis PREGUNTONTAS...
Responder Con Cita