Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Error de sintaxis INSERT INTO (https://www.clubdelphi.com/foros/showthread.php?t=76412)

AlanSlash 31-10-2011 01:35:16

Error de sintaxis INSERT INTO
 
Buenos dias gente del foro, tengo un problema con el ingreso de datos a una tabla de Access.

Yo definí esta instrucción SQL:
Código SQL [-]
INSERT INTO Agenda
(Nombre, Celular, Casa, Direccion, E-Mail, Otro)
VALUES(:nom, :cel, :casa, :dir, :email, :otro)

después definí este código en el evento de clickeo de un botón:
Código Delphi [-]
procedure TAgenda.BotAgregarClick(Sender: TObject);
begin

   insertar.Close;
        insertar.Parameters.ParamValues['nom'] :=editNOM.Text;
        insertar.Parameters.ParamValues['cel'] :=editCEL.Text;
        insertar.Parameters.ParamValues['casa'] :=editCASA.Text;
        insertar.Parameters.ParamValues['dir'] :=editDIR.Text;
        insertar.Parameters.ParamValues['email'] :=editMAIL.Text;
        insertar.Parameters.ParamValues['otro'] :=editOTRO.Text;
   insertar.Open;
    end;

el problema se me presenta cuando quiero insertar los datos dentro de la tabla, ya que al apretar el botón al ejecutarlo me devuelve el siguiente error "Error de sintaxis INSERT INTO", la verdad no se que pueda ser, los campos en la tabla están definidos todos como texto y no tengo problemas en hacer consultas de la tabla, sólo no puedo insertar elementos:confused:

muchas gracias desde ya por su ayuda!

Caral 31-10-2011 02:29:40

Hola
El problema es que cierres la consulta antes de ver los parametros:
Código Delphi [-]
procedure TAgenda.BotAgregarClick(Sender: TObject);
begin
        insertar.Close;
        insertar.sql.text:= 'INSERT INTO Agenda (Nombre, Celular, Casa, Direccion, E-Mail, Otro) '+
                           ' VALUES(:nom, :cel, :casa, :dir, :email, :otro) ';
        insertar.Parameters.ParamValues['nom'] :=editNOM.Text;
        insertar.Parameters.ParamValues['cel'] :=editCEL.Text;
        insertar.Parameters.ParamValues['casa'] :=editCASA.Text;
        insertar.Parameters.ParamValues['dir'] :=editDIR.Text;
        insertar.Parameters.ParamValues['email'] :=editMAIL.Text;
        insertar.Parameters.ParamValues['otro'] :=editOTRO.Text;
        insertar.Open;
    end;
Saludos

Lepe 31-10-2011 19:48:49

AlanSlash, lo tienes "casi perfecto".

El fallo es porque tu consulta es de Acción (insert, delete, drop, alter table..., etc) en esos casos debes de usar "insertar.Execute" ExecuteCommand, ExecSql, o el que sea (dependerá de si usas BDE, ADO, etc),

Si el sql lo tienes puesto desde el inspector de objetos, y no se cambia durante toda la ejecución del programa, en el oncreate de la ventana podrías usar esta orden:
Código Delphi [-]
insertar.prepare;

Eso hace que se compile la consulta y sea más rápida su ejecución.

El insertar.Close y su opuesto insertar.Open se usa cuando tienes una instrucción de selección ( un SELECT en el sql)

Saludos

AlanSlash 01-11-2011 01:00:47

Muchas gracias a ambos por la respuesta, pero sigue dándome el mismo error, no entiendo la verdad, sólo dice error de sintaxis INSERT INTO;:mad:

Muchas gracias igualmente por tomarse el tiempo!

Casimiro Notevi 01-11-2011 09:42:16

Pega todo el código aquí, o comprímelo y lo adjuntas, que le echemos un vistazo.

Caral 02-11-2011 02:21:07

Hola
Cita:

Empezado por Casimiro Notevi (Mensaje 417258)
Pega todo el código aquí, o comprímelo y lo adjuntas, que le echemos un vistazo.

Amigo creo que no puede poner el código, AlanSlash solo tiene 5 post.
Si AlanSlash me manda un mensaje privado le doy mi correo así me podrá enviar el código y lo reviso con gusto.
Saludos

AlanSlash 02-11-2011 02:23:46

Hola, muchas gracias a ambos, disculpen mi inexperiencia con esto, pero que archivo deberia mandarles? el .pas o algún otro;
Muchas gracias por la ayuda de nuevo:D

Caral 02-11-2011 02:25:10

Hola
Todo el codigo del programa con la Base de datos incluida (todo).
Lo que puedes hacer es quitarle el exe, lo demas se necesita para revisarlo.
Saludos

Caral 02-11-2011 02:45:24

Hola
Ya esta revisado.
1- La conexion del adoconnection no es la mejor (seria bueno cambiarla).
2- Tienes un Adoquery por cada cosa que quieres hacer (buscar, agregar, etc) es innecesario.
3- Es pejor usar o Parambyname o mejor parameters[] directamente (segun mi opinion).
Ya me diras que quieres hacer, lo modifico, te indico como hacerlo, que quieres hacer?.
Saludos

AlanSlash 02-11-2011 02:49:32

Gracias
La verdad hace poco que empezé con esto asi que cualquier cosa que usted crea conveniente la haré.
Lo que sí, hay un ADOQUERY de borrar que lo iba a sacar porque me di cuenta que eso se puede hacer directamente en la tabla.

Si me dice que modificar yo lo hago, no hay problema.

Muchas gracias por su tiempo!

Caral 02-11-2011 03:04:51

Hola
Estoy haciendole algunos cambios, te los enviare por correo para que los veas y ya comentaras que te parecen.
Saludos

Caral 02-11-2011 03:40:05

Hola
ya te envie los cambios por correo.
Cualquier duda comentala.
Saludos


La franja horaria es GMT +2. Ahora son las 00:42:36.

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