DiegoPucho
09-06-2018, 19:44:00
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.
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°: 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 _/_/_.
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... :D
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.
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°: 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 _/_/_.
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... :D