Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-06-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 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
  #2  
Antiguo 09-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Para estas cosas es perfecto el libro este. Te harás un experto si acudes al mismo.
Para cosas como esta:
Código Delphi [-]
FrmModArt.QProductos.FieldByName('FechaCompra').Text:= sDateEdit1.Text;  /// acá el 3° problema.
La base de datos debe tener el campo FechaCompra del tipo fecha, según la base de datos que utilices será date, datetime, timestamp, etc.
Y pondrías algo así:
Código Delphi [-]
......QProductos.FieldByName('FechaCompra').DateTime := ......
Porque no creo que estés guardando las fechas en modo texto, imagino.
Responder Con Cita
  #3  
Antiguo 09-06-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
gracias Casimiro, siempre estas pendiente... espero no ofenderte... el libro ya lo descargue, se me complica leerlo desde la maquina... (soy mas chapada a la antigua: Papel). Pero ya me voy a poner a leerlo...
Cita:
Porque no creo que estés guardando las fechas en modo texto, imagino.
Buen punto. (.) Mayusculo. . No se puede guardar en modo texto.??? Por que??? Preguntas facultativas.

FrmModArt.QProductos.FieldByName('idProveedor').Text: -> Pasaría lo mismo??
Responder Con Cita
  #4  
Antiguo 09-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si quieres, por ejemplo, calcular cuántos días han pasado entre varias fechas, o mostrar registros ordenados por fecha, o sumar/restar fechas, etc. lo ideal es guardar fechas. (Una fecha es realmente un número con decimales, por lo que facilita hacer cálculos con ellas).
El código del proveedor normalmente será un número, aunque si usas letras, tendrás que guardarlo como varchar.

Ten en cuenta que la estructura de la base de datos es como la estructura de un edificio, sus cimientos, columnas, etc.
Y el programa es como las paredes, que puedes poner en un sitio u otro, pintar de distintos colores, etc.

Pero con una buena estructura siempre tendrás una buena base para tu programa/edificio. Si la estructura es mala, luego te encontrarás con problemas, se puede derrumbar/caer, no podrás poner más plantas/pisos, no podrás mover paredes, etc.

La estructura es esencial.
Lee el libro
Responder Con Cita
  #5  
Antiguo 10-06-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
Hola casimiro de nuevo, pero en la propiedad que mencionas:
Código Delphi [-]
......QProductos.FieldByName('FechaCompra').DateTime := ......
No me sale la propiedad DateTime, solo AsDateTime... (es lo mismo?)
De la forma que estaba me guarda el valor, el problema es cuando esta vació el campo. Si lo guarda no creo que sea el problema de como lo guardo.
Quiero decirle que si esta vació.... entonces... desactivarlo... sino guardarlo... (Pero no puedo)...
Código Delphi [-]
if Trim(ComboBoxProveedor.Text) = '' then
    begin
     FrmModArt.QProductos.FieldByName('idProveedor').Value := NULL;
/// Acá no se que poner (if vacio the Null sino que lo guarde). 
     FrmModArt.QProductos.FieldByName('idProveedor').Text:= ComboBoxProveedor.KeyValue;
    end;

Y ya lo estoy leyendo al Libro... Espero que me ayuden...
Responder Con Cita
  #6  
Antiguo 10-06-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
hice traducción del else mal... es sino...
ya solucione el 1° así:
Código Delphi [-]
if Trim(ComboBoxProveedor.Text) = '' then
    begin
     FrmModArt.QProductos.FieldByName('idProveedor').Value := NULL;
    end
else
    begin
     FrmModArt.QProductos.FieldByName('idProveedor').Text:= ComboBoxProveedor.KeyValue;
    end;

Pero no lo consigo con el 2° lo hice igual y nada...
Responder Con Cita
  #7  
Antiguo 10-06-2018
DiegoPucho DiegoPucho is offline
Miembro
NULL
 
Registrado: ago 2017
Posts: 36
Poder: 0
DiegoPucho Va por buen camino
Guardar un DateEdit en base de Datos

Logre solucionar el 2° Problema de la siguiente manera:
Código Delphi [-]
if sDateEdit1.Text = ('  /  /    ') then
    begin
     FrmModArt.QProductos.FieldByName('FechaCompra').Value := NULL;
    end
else
    begin
     FrmModArt.QProductos.FieldByName('FechaCompra').Text:= sDateEdit1.Text;
    end;
Espero que a alguien le sirva...
Responder Con Cita
  #8  
Antiguo 10-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por DiegoPucho Ver Mensaje
No me sale la propiedad DateTime, solo AsDateTime... (es lo mismo?)
No recuerdo de memoria, es que estoy cambiando de lenguajes durante todo el día, de unos a otros. Sí, será asdatetime.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar y Leer fotos directamente a una base de datos sin antes guardar como archivo rmeckbell Desarrollo en Delphi para Android 6 26-06-2017 19:24:20
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas adaypr C++ Builder 1 05-09-2006 12:56:33
Guardar QR en base de datos jose_c27 Impresión 1 06-11-2005 04:32:16
guardar un jpg en una base de datos ing_alsaac Gráficos 1 16-10-2003 02:15:16


La franja horaria es GMT +2. Ahora son las 18:50:17.


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