Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-12-2010
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
insertar registros sql con delphi

Buenas,

estoy intentando insertar un registro usando:

Código Delphi [-]
qproductos.SQL.Clear;
qdespachos.sql.add('insert productos set fecha = '+(fecha));
    qdespachos.SQL.Add(',');
    qdespachos.sql.add('hora = '+ QuotedStr(hora));
   qdespachos.SQL.Add(',');
   qdespachos.sql.add(' comprobante = '+ QuotedStr(comprobante));
   qdespachos.SQL.Add(',');
   qdespachos.sql.add(' precio = '+ QuotedStr(precio));

La fecha y hora son del tipo tdate y ttime, comprobante es integer y precio es real.

Con estos datos como hago que delphi me lo reconozca.

y tambien faltaria el codigo pero es autoincrementable.

un saludo y gracias
Responder Con Cita
  #2  
Antiguo 20-12-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que te has confundido, has puesto "insert" a una sentencia "update"

insert into tabla (campos) values (valores);
update tabla set campo=valor, campo=valor, etc...

Léete un manual de sql
Responder Con Cita
  #3  
Antiguo 21-12-2010
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
tienes toda la razon casimiro,
de todas formas tengo un pequeño problemita a la hora de insertar

Código Delphi [-]
form1.zquery1.sql.Add('insert into contactos (codigo, nombre, fechaingre, horaingre, aportacion, observaciones) VALUES(');
 form1.ZQuery1.SQL.Add(QuotedStr(nombre));
    form1.zquery1.SQL.Add(',');
  form1.ZQuery1.SQL.Add(QuotedStr(fechaingre));
    form1.zquery1.SQL.Add(',');
    form1.ZQuery1.SQL.Add(QuotedStr(horaingre));
    form1.zquery1.SQL.Add(',');
    form1.ZQuery1.SQL.Add(QuotedStr(aportacion));
    form1.zquery1.SQL.Add(',');
    form1.ZQuery1.SQL.Add(QuotedStr(observamemo.Text));
   form1.zquery1.SQL.Add(')');
   form1.ZQuery1.ExecSQL;
El invento de arriba me ha funcionado cuando todos los datos son convertidos de edit.text, pero cuando ya son externos y variando el tipo de dato, ya no funciona.
Donde codigo es autoincrement, fechaingre y horaingre son del sistema tipo tdate y ttime, aportacion es un numero real convertido desde un edit.text y observaciones es directo desde un memo.
No puedo poner quotedstr en fecha porque es fecha, ahi tengo el problema, de que manera puedo añadir los tipos, fecha, hora y real

estoy leyendo sql, como me dijiste, pero a la hora de usarlo en delphi, tengo un pequeño problemita.
Responder Con Cita
  #4  
Antiguo 21-12-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bueno, de esa forma también puedes hacerlo, aunque te recomiendo que uses otro modo, el de los parámetros, te explico con un ejemplo:

Código Delphi [-]
query.sql.text := 'insert into tbClientes (codigo,nombre,fecha,sueldo) values (:codigo,:nombre,:fecha,:sueldo)';
query.sql.parambyname('codigo').asinteger := elquesea;
query.sql.parambyname('nombre').asstring := 'pepito';
query.sql.parambyname('fecha').asdatetime := now;
query.sql.parambyname('sueldo').asfloat := 1500.50;
query.ExecQuery;
Responder Con Cita
  #5  
Antiguo 22-12-2010
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Supongo que ya lo sabes, pero por si acaso, aparte de con una instrucción SQL también puedes añadir el registro de la siguiente forma.

Código Delphi [-]
form1.ZQuery1.Insert;
form1.ZQuery1.FieldByName('nombre').AsString:=nombre;
form1.ZQuery1.FieldByName('fechaingre').AsString:=fechaingre;
form1.ZQuery1.FieldByName('horaingre').AsString:=horaingre;
form1.ZQuery1.FieldByName('aportacion').AsString:=aportacion;
form1.ZQuery1.FieldByName('observaciones').AsString:=observamemo.lines.text;
form1.ZQuery1.Post;
Responder Con Cita
  #6  
Antiguo 22-12-2010
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
gracias casimiro, y gracias ElDioni.
Ya use la de casimiro y si va bien, el codigo autoincrement va solo .

Cualquiera de los dos metodos es lo mismo?.
Lo digo más que nada porque se tarda algo en escribir varios registros.
Me explico:
Tengo un texto plano en el que figuran lineas de detalle, son 800 lineas, pero tienen la misma estructura.
Tengo que delimitar por secciones el contenido de cada linea para ir escribiendolas en registros y ya poder hacer operaciones con ellas, una vez metidas en una base de datos.
Estoy usando sqlite.
Las preguntas:
Parece qeu se tarda en ir escribiendo cada registro nose si es normal(no es por la conversion porque use un grid normal y no tarda nada)

Otro punto es, si tengo en el dbgrid campos tipo real, me muestra la parte entera redondeada, es decir, si tengo 11.6 me muestra en el dbgrid 12, y se olvida de la parte decimal.

y tercera, aunque on es exclusivamente de sql.
Ya puse un cnotador y una barra de progreso para ver cuanto va realizado, y funciona, pero si muevo la ventana o la maximizo, esos datos se congelan y la ventana del form dice que el programa no responde, pero si espero un rato hasta que acaba la operacion el proceso acaba de completarse.

A ver sabeis por que pasa todo esto (me preocupa mas lo del dbgrid que no me muestre los numeros decimales y que se congele que el que se tarde en escribir los registros)

muchas gracias a los dos
Responder Con Cita
  #7  
Antiguo 22-12-2010
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Como no puedo editar el mensaje anterior, dire que el tema de ver los decimales ya lo tengo arreglado, una tonteria, tenía que añadir las columnas que queria ver, en este caso todas, pero aplicarle formato para verlos.

Del resto no he encontrado solución todavía. Esto es, que se "cuelgue" mientras esta escribiendo los registros. voy a probar con un timer a ver si refresca los datos.
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
Insertar Registros en Delphi para PHP ovasquez PHP 0 25-10-2008 23:24:54
insertar registros hxochitemol Conexión con bases de datos 1 02-06-2007 01:21:56
Problema al insertar registros en una BD epalacios SQL 4 07-06-2005 19:11:16
Insertar registros en MySQL TONIAM MySQL 0 24-05-2005 15:47:49
Problemas al insertar registros con ADO sanluisme Conexión con bases de datos 0 04-03-2004 10:34:41


La franja horaria es GMT +2. Ahora son las 00:59:09.


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