Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problemas Con el Insert (https://www.clubdelphi.com/foros/showthread.php?t=56476)

NestorN 19-05-2008 03:53:41

Problemas Con el Insert
 
Hola Gente, quisiera saber si alguien puede ayudarme con un problema que tengo. Estoy trabajando con una base de datos en sql server 2000, y utilizo las erramientas ADO de delphi. Cando quiero relizar un INSERT por medio de ADOquery no lanza el siguiente error:

Proyect Bibliotecaa.exe raised exception class EOleExeption whit message 'El nombre 'Nro_Legajo' no es válido en este contexto. Solo se permiten constantes, expresiones o variables. No se permiten nombre de culomna.

Si alguien puede darme una ayuda, se lo agradesco desde ahora.

Nestor

poliburro 19-05-2008 05:58:38

Podrías incluir la consulta por favor?

Alexandro 19-05-2008 14:33:00

Problemas Con el Insert
 
Creo que deberías ser un poco mas especifico. Nos gustaría que mandaras la consulta para hecharle un vistazo.
Salu2

BlueSteel 19-05-2008 16:07:16

Cita:

Empezado por NestorN (Mensaje 287578)
Hola Gente, quisiera saber si alguien puede ayudarme con un problema que tengo. Estoy trabajando con una base de datos en sql server 2000, y utilizo las erramientas ADO de delphi. Cando quiero relizar un INSERT por medio de ADOquery no lanza el siguiente error:

Proyect Bibliotecaa.exe raised exception class EOleExeption whit message 'El nombre 'Nro_Legajo' no es válido en este contexto. Solo se permiten constantes, expresiones o variables. No se permiten nombre de culomna.

Si alguien puede darme una ayuda, se lo agradesco desde ahora.

Nestor


Como dicen, deberias dejar tu codigo para analizarlo....

aunque me parece que estas haciendo referencia aun componente por su nombre y le falta el apellido

Nro_Legajo, a le mejor debe ser Nro_Lejago.Text , pero si no entragas más info, será dificil ayudarte...

salu2:p:D

NestorN 19-05-2008 18:53:08

Este sería el código en el botón 'grabar':
var cond1:widescreen;
query1.SQL.Clear;
cond1 := 'Insert into tSocios '+
'VALUES (Nro_Legajo= '+ dbedit1.Text+',Nro_DNI ='+ dbedit2.text +',Nom_Socio ='+ QuotedStr(dbedit3.Text)+
'Apel_Socio ='+ QuotedStr(dbedit4.Text)+',Tel_Socio = '+dbedit5.Text ;
query1.SQL.Add(cond1);
query1.open;

Tengo los dbedit relacionados a un datasource, luego el data source con un adoquery, y esa es la consulta que ejecuto en un boton grabar.
También probe sacando los dbedit, por edit simples, y omiti el datasourse y sigue con el mismo, error, y me esta retrsando mucho. Muchas gracias

BlueSteel 19-05-2008 19:08:15

Hola...

bueno, te aconsejo que utilices las etiquetas de codigo...así se verá mejor el codigo...

Código Delphi [-]
var cond1:widescreen;
query1.SQL.Clear;
cond1 := 'Insert into tSocios '+'VALUES (Nro_Legajo= '+ dbedit1.Text+',Nro_DNI ='+ dbedit2.text +',Nom_Socio ='+ QuotedStr(dbedit3.Text)
'Apel_Socio ='+ QuotedStr(dbedit4.Text)+',Tel_Socio = '+dbedit5.Text ;
query1.SQL.Add(cond1);
query1.open;


Cita:

Empezado por NestorN (Mensaje 287739)
Tengo los dbedit relacionados a un datasource, luego el data source con un adoquery, y esa es la consulta que ejecuto en un boton grabar. También probe sacando los dbedit, por edit simples, y omiti el datasourse y sigue con el mismo, error, y me esta retrsando mucho. Muchas gracias

Que raro, se supone que si utilizas DBEdit no debes realizar el codigo anterior, solo debes actualizar la tabla... creo que el error que te da es que estas granbando algo que ya esta ingresado (por el DBEdit...)...


El otro error que tienes es que esta finalizando la sentencia con
Código Delphi [-]
query1.open;
y debiera ser
Código Delphi [-]
 
query1.ExecSQL;

Te recomiendo que realices todo el proceso solo co Edits o componentes similares...

Salu2:p:D

Delphius 19-05-2008 21:46:00

Hola, ¿Que no es que la sentencia SQL viene así?

Código SQL [-]
insert into TU_TABLA (LISTADO_DE_CAMPOS) values (LISTADO_DE_VALORES)

:confused::confused:
Por otro lado, como dice BlueSteel, debes llamar al método ExecSQL y no a Open.

BlueSteel 19-05-2008 21:54:25

Cita:

Empezado por Delphius (Mensaje 287820)
Hola, ¿Que no es que la sentencia SQL viene así?
Código SQL [-]
insert into TU_TABLA (LISTADO_DE_CAMPOS) values (LISTADO_DE_VALORES)



:confused::confused:

Tienes razón Delphius, pero cuando vas a realizar un ingreso de un registro con todos sus campos no es necesario especificar los campos, solo se especifican (detallan) cuando no ingresaras un campo en especial...es decir, al especificar la Tabla solamente, es asume que ingresaras datos en todos los campos..

en el caso de las tablas que poseen autoincrementales, debes especificar todos los campos (excepto el autoincremental)...

Salu2:p:D

BlueSteel 19-05-2008 21:57:08

Cita:

Empezado por NestorN (Mensaje 287811)
Este sería el código en el botón 'grabar':
var cond1:widescreen;
query1.SQL.Clear;
cond1 := 'Insert into tSocios '+
'VALUES (Nro_Legajo= '+ dbedit1.Text+',Nro_DNI ='+ dbedit2.text +',Nom_Socio ='+ QuotedStr(dbedit3.Text)+
'Apel_Socio ='+ QuotedStr(dbedit4.Text)+',Tel_Socio = '+dbedit5.Text ;
query1.SQL.Add(cond1);
query1.open;

Tengo los dbedit relacionados a un datasource, luego el data source con un adoquery, y esa es la consulta que ejecuto en un boton grabar.
También probe sacando los dbedit, por edit simples, y omiti el datasourse y sigue con el mismo, error, y me esta retrsando mucho. Muchas gracias

NestorN, veo que estas repitiendo el mismo mensaje, creo que si no pones de tu parte, será un poco dificil ayudarte

Salu2:p:D

Delphius 20-05-2008 02:01:11

Cita:

Empezado por NestorN (Mensaje 287928)
Hola, gracias por sus comentarios, voy a probar con lo que me han dicho, y luego les comento las novedades.
BlueSteel, no veo donde este repetido el mensaje, si es asi pido disculpas, mi conexion no anda muy bien.

No los ves porque ya han sido borrados por un moderador. Te pediría que para la próxima tengas presente la guia de estilo. Y que por favor emplearas las etiquetas DELPHI para visualizar el código.

Saludos,

NestorN 20-05-2008 02:30:39

Hola, gracias por sus comentarios, voy a probar con lo que me han dicho, y luego les comento las novedades.
BlueSteel, no veo donde este repetido el mensaje, si es asi pido disculpas, mi conexion no anda muy bien.

NestorN 21-05-2008 20:40:49

Gracias
 
Hola gente, gracias a su ayuda, y un poco de investigación pude solucionar mi problema. Aca les dejo el código, por si alguien le pasa lo mismo.
Código:

var cond1:widestring;
begin
query1.SQL.Clear;
cond1 := 'Insert into Socios (Nro_Legajo,Nro_DNI, Nom_Socio, Apel_Socio) VALUES (' + leg.text + ',' + dni.text + ',' + QuotedStr(nom.Text)+',' + QuotedStr(apel.Text)+ ')';
query1.SQL.Add(cond1);
query1.ExecSQL;
end;

Tenia un pequeño error en la sintaxis de la consulta sql, y el comando ExeSQL, también me sirvio. Gracias Nestor


La franja horaria es GMT +2. Ahora son las 09:18:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi