Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-08-2012
daragor daragor is offline
Miembro
NULL
 
Registrado: ago 2012
Posts: 91
Poder: 12
daragor Va por buen camino
¿Cómo insertar datos con Mysql?

Hola gente! necesito ayuda con lo siguiente..
Tengo un TEdit donde se debe ingresar una fecha, es importante que el formato sea del tipo dd/mm/aaaa (Ej. 25/08/2012)
- Existe alguna funcion para formatear esto por si el usuario ingresa mal este formato?

Tengo errores a la hora de compilar, el codigo es asi
Código Delphi [-]
*Declaro la variable:
Var
  cfec: TDate;
Begin
*En el Click del boton Grabar, hago el insert, antes trato de formatear la fecha ingresada:
  cfec:= StrToDate(fec.Text);
  cfec:= FormatDateTime('yyyy-mm-dd',cfec);
  QGraba.SQL.Text:= 'INSERT INTO compras (fec,paga,mon,esta) VALUES('+cfec+','+0.00+','+total.Text+',"CARGADA")';

Sobre todo tengo error en esta parte:
cfec:= FormatDateTime('yyyy-mm-dd',cfec);

Ahora el problema sigue debido a mi inexperiencia, viendo la base de datos mysql graba las fecha con el formato yyyy-mm-dd, y al realizar un INSERT tomando el texto del TEdit como debe ir formateado?

>>Entonces como debo tomar un dato de fecha y como debo insertarlo mediante una instruccion correcta en MySQL<<

Muchas gracias espero se entienda!

Última edición por daragor fecha: 29-08-2012 a las 16:21:56.
Responder Con Cita
  #2  
Antiguo 29-08-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola

Código Delphi [-]
Var
  cfec: TDate;
begin
  cfec:= FormatDateTime('yyyy-mm-dd',cfec);
  QGraba.SQL.Text:= 'INSERT INTO compras (fec,paga,mon,esta) VALUES('+cfec+','+0.00+','+total.Text+',"CARGADA")';

Esto (cfec:= StrToDate(fec.Text) no es correcto, cfec lo declaras tdate, no string.


Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 29-08-2012
daragor daragor is offline
Miembro
NULL
 
Registrado: ago 2012
Posts: 91
Poder: 12
daragor Va por buen camino
Hola Caral la verdad no entiendo que modificacion hiciste en el codigo, la cuestion es que sigue todo igual.. error al compilar. cfec esta declarado como TDate, eso puse.

El Error:
unit2.pas(205,10) Error: Incompatible types: got "AnsiString" expected "TDate"
unit2.pas(208,73) Error: Operator is not overloaded: "Constant String" + "TDate"

Espero puedas ayudarme, gracias
Responder Con Cita
  #4  
Antiguo 29-08-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código Delphi [-]
Var
  cfec: TDate;
Begin
*En el Click del boton Grabar, hago el insert, antes trato de formatear la fecha ingresada:
   QGraba.SQL.Text:= 'INSERT INTO compras (fec,paga,mon,esta) VALUES('+FormatDateTime('yyyy-mm-dd',cfec)+','+0.00+','+total.Text+',"CARGADA")';

Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 29-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración

Procura poner títulos descriptivos: "problema con fecha" no es ningún título descriptivo, ¿se te quedó el reloj sin pilas?, ¿no sabes en qué día vives?...
Gracias nuevamente por tu colaboración.
Responder Con Cita
  #6  
Antiguo 29-08-2012
daragor daragor is offline
Miembro
NULL
 
Registrado: ago 2012
Posts: 91
Poder: 12
daragor Va por buen camino
Hola Casimiro.. pido disculpa por no publicar bien, no sabia de la existencia de la guia de estilo. Quise editar el titulo del post pero no puedo.
Responder Con Cita
  #7  
Antiguo 29-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Tal como ya te han comentado, es mejor, y yo diría que imperativo, introducir los valores vía parámetros. El dataset siempre sabrá cuál es el formato adecuado de la fech para el gestor de datos en partícular. Nunca hay que confiar en el "conocimiento" que tengamos acerca de ómo se guarda un determinado valor.

Por otro lado, mencionas que es importante que el formato sea del tipo dd/mm/aaaa, pero, recuerda que el formato es independiente del valor. No puedes forzar al motor a guardar la fecha en un formato determinado a menos que la guardes como cadena de caracteres, con lo cual pierdes las ventajas de tener el campo DATE. El formato es algo que debe preocuparte sólo al mostrar los datos en tu aplicación.

// Saludos
Responder Con Cita
  #8  
Antiguo 29-08-2012
daragor daragor is offline
Miembro
NULL
 
Registrado: ago 2012
Posts: 91
Poder: 12
daragor Va por buen camino
Muchachos me han ayudado mucho, y encaminado a una buena programacion, vengo de visual foxpro y debo ir adaptandome a estas sintaxis.
Ya estoy estudiando parametros y segun entiendo funcionan muy bien. Gracias! excelente comunidad...
Responder Con Cita
  #9  
Antiguo 29-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Qué bueno que te haya servido!

Realmente, el uso de parámetros en consultas SQL (y no sólo para valores tipo DATE) proporciona código más limpio y legible. Yendo más allá, yo te recomendaría, de hecho, no hacer consultas SQL `al vuelo`, esto es, no asignar el texto de la consulta en código sino hacerlo en el inspector de objetos durante el diseño de la aplicación. En código sólo el reemplazo de los parámetros.

Así tienes un código más fácil de mantener.

// Saludos
Responder Con Cita
  #10  
Antiguo 29-08-2012
daragor daragor is offline
Miembro
NULL
 
Registrado: ago 2012
Posts: 91
Poder: 12
daragor Va por buen camino
Compañero roman, entonces los textos, cadenas, de consultas SQL irian en la propiedad SQL de un TSQLQuery? de ser asi... como hago para indicar distintos tipos de consultas a un solo objeto TSQLQuery? no consigo buenas guias para aprender. Por cierto, estoy usando Lazarus..
Responder Con Cita
  #11  
Antiguo 29-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
La mejor guía para aprender
Responder Con Cita
  #12  
Antiguo 29-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por daragor Ver Mensaje
como hago para indicar distintos tipos de consultas a un solo objeto TSQLQuery?
Es que, en mi opinión, eso es una mala práctica. Cada consulta debe verse como un objeto en sí: clientes, recibos, agregaCliente, agregaRecibo, etc. Todos representados por un Query localizado en un DataModule.

Es preferible gastar unos cuantos bytes más en recursos usando múltiples querys que tratar de economizar reusando un sólo query.

Así, por ejemplo, tu consulta de este hilo estaría representada por un query qryAgregaCompra con el siguiente texto en su propedad SQL:

Código SQL [-]
insert into compras (fec,paga,mon,esta) values(:fecha, ago, :monto, :estatus)';

Al momento de agregar una compra simplemente suples los valores:

Código Delphi [-]
qryCompras.ParamByName('fecha').AsDate := Fecha;
qryCompras.ParamByName('pago').AsFloat := 0;
qryCompras.ParamByName('monto').AsString := Total.Text;
qryCompras.ParamByName('estatus').AsString := 'CARGADA';

qryCompras.ExecSQL;

quedándote, según yo, un código mucho más limpio.

// Saludos
Responder Con Cita
Respuesta



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
como insertar comilla simple en mysql server granodetoro MySQL 1 03-05-2011 03:12:41
Como insertar y Guardar registro en MySql con Delphi of PHP kurono Varios 2 23-10-2010 00:18:47
Como insertar y Guardar registro en MySql con Delphi of PHP kurono Varios 0 21-08-2010 03:49:12
insertar datos en mysql con zeos Stanley Conexión con bases de datos 1 04-05-2007 22:46:01
No puedo insertar datos (por parámetros) en una tabla - Zeos, Mysql belen MySQL 2 13-10-2006 00:16:51


La franja horaria es GMT +2. Ahora son las 11:17:53.


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