PDA

Ver la Versión Completa : Insertar numero en tabla paradox


dayser
23-07-2006, 21:47:27
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:


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
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
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.