Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Insertar numero en tabla paradox (https://www.clubdelphi.com/foros/showthread.php?t=33994)

dayser 23-07-2006 21:47:27

Insertar numero en tabla paradox
 
Hola a todos,
tengo un problema al insertar datos de tipo numerico en la tabla.

Estoy trabajando con c++ builder 5, he creado una tabla paradox 7, con un campo de tipo N (numerico).
Luego en un formulario a traves de un boton inserto los datos de la siguiente forma:

QueryInsertar->Close();
QueryInsertar->SQL->Clear();
QueryInsertar->SQL->Add("INSERT INTO tabla");
QueryInsertar->SQL->Add("VALUES (' "+Edit1->Text+" ',"+Edit2->Text.ToDouble()+")");
QueryInsertar->ExecSQL();

En Edit1->Text hay una cadena de texto.
Edit2->Text.ToDouble() hay numeros con decimales.

Y me da el siguiente error:
Proyect ProcjectNuevo.exe raised exception class EDBEngineError with message 'Invalid parameter.'.
Process stopped. Use step or run to continue.

El error creo que es del edit2, ya que al insertar:

QueryInsertar->SQL->Add("VALUES (' "+Edit1->Text+" ',50.28")");

esto si me lo inserta, pero cogiendo el dato del edit o de una variable de tipo double o float me da el error.

No se que puede ser, espero que alguien me pueda ayudar. Gracias.

marcoszorrilla 23-07-2006 22:03:01

La sintáxis SQL que estás utilizando es incorrecta:

Código SQL [-]
Insert
Into Nombre_Tabla(Nombre_Campo1, Nombre_Campo2)
Values('Texto' , 3.09)

Un Saludo.

dayser 23-07-2006 22:07:02

Tambien lo he probado asi y me da el error.

Yo lo que quiero en insertar el contenido de los edit en la tabla.
Los datos los tengo que coger de los edits, el texto y el numero. No lo puedo escribir yo a mano.

marcoszorrilla 23-07-2006 22:14:55

Entonces al campo numérico le tendrás que aplicar
StrToFloat(xxx).

Un Saludo.

marcoszorrilla 23-07-2006 22:17:19

Código SQL [-]
Insert
Into Nombre_Tabla(Nombre_Campo1, Nombre_Campo2)
Values(Edit1.Text , Edit2.Text)

Es posible que no te admita el edit2.text si va dirigido a un
campo numérico de tipo doble.

En ese caso tendrías que transformar el número en Float, en
Delphi sería StrTofloat....

Un Saludo.

dayser 23-07-2006 23:41:21

Gracias creo que puede funcionar con eso.
Pero ahora no me compila, en esta linea esta el error pero no se cual es:

QueryInsertar->SQL->Add("VALUES (' "+Edit1->Text+" ',"+StrToFloat(Edit2->Text)+")");

Me dice que no puedo poner el operador + antes del StrToFloat, pero entonces como concateno?, si los quito me pone que falta un parentesis.

Alguna idea. Gracias
Un saludo.

marcoszorrilla 24-07-2006 07:02:07

Código Delphi [-]
Sql.Add('Insert
Into Nombre_Tabla(Nombre_Campo1, Nombre_Campo2)
Values('+Edit1.Text+ ','+StrToFlat(Edit2.Text))
Un Saludo.

dayser 24-07-2006 12:00:27

No me deja poner el + delante del StrToFloat me pone el siguiente error:

Operator + not implemented in type AnsiString for arguments of type long double.

Y si quito el + me pone:

Function call missing ")".

No se que hacer si teneis alguna idea.

Gracias.

dayser 24-07-2006 20:23:47

Por fin dí con el error, despues de dos dias intentandolo lo conseguí.

El error no era de ningún problema de sintaxis, lo que pasaba era que el valor del edit2 era un numero decimal con coma (58,92) en vez de con punto (58.92), y en la base de datos no me deja insertar numeros con coma, aunque luego los visualiza con comas y no con puntos.

Lo que no conseguí fue que funcionase lo del StrToFloat.

Un saludo y Gracias por las soluciones.


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

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