FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
Problema con insert
Hola a tod@s!. Tengo un problemilla al hacer un insert. El codigo que tengo es el siguiente:
ADOQInsertar->SQL->Clear(); ADOQInsertar->SQL->Add("INSERT INTO candidatos(Nombre)"); ADOQInsertar->SQL->Add("VALUES("+ENombre->Text.Trim()+");"); cadena = ADOQInsertar->SQL->Text.Trim(); Edit1->Text = cadena; ADOQInsertar->ExecSQL(); ADOQInsertar->Active = true; FPrincipal->DBGCandidatos->DataSource = DSInsertar; Al insertar me da un error que dice que ENombre no tiene valores por defecto (¿?¿?¿?¿?). Si inserto tambien el Id, que es la clave, me dice que no puede porque crearia valores duplicados, y sin embargo, ese id no esta en la base de datos. ¿Podeis ayudarme? |
#2
|
||||
|
||||
yo empezaria por
Código:
ADOQInsertar->SQL->Clear(); ADOQInsertar->SQL->Add("INSERT INTO candidatos(Nombre) VALUES("+ENombre->Text.Trim()+");"); cadena = ADOQInsertar->SQL->Text.Trim(); Edit1->Text = cadena; ADOQInsertar->ExecSQL(); ADOQInsertar->Active = true; FPrincipal->DBGCandidatos->DataSource = DSInsertar; Código:
ADOQInsertar->SQL->Add("INSERT INTO candidatos(Nombre) VALUES('"+ENombre->Text.Trim()+"');"); //o asi.... ADOQInsertar->SQL->Add("INSERT INTO candidatos(Nombre) VALUES(\""+ENombre->Text.Trim()+"\");");
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad." Simón Bolívar (Carta al Coronel Inglés Patricio Cambell 05/08/1829). Última edición por OSKR fecha: 03-11-2005 a las 22:38:02. |
#3
|
||||
|
||||
no se si sea porque es en Builder, pero siguiendo mi poco conocimiento de la matería: no logro entender porque al final de la secuencia SQL le agregas un punto y coma. Al menos a mi me parece extraño.
Cita:
Coincido con el detalle de las comillas al momento de pasar el nombre...
__________________
|
#4
|
|||
|
|||
No me funciona
He probado este codigo para insertar el Id, pero me dice que crearia campos duplicados y me da error, aunque sin embargo lo inserta en la base de datos:
String cadena; FPrincipal->ADOQListacandidatos->SQL->Clear( FPrincipal->ADOQListacandidatos->SQL->Add("INSERT INTO candidatos (Id) VALUES(\""+ECodigo->Text.Trim()+ "\")"); cadena = FPrincipal->ADOQListacandidatos->SQL->Text.Trim(); Edit1->Text = cadena; FPrincipal->ADOQListacandidatos->ExecSQL(); FPrincipal->ADOQListacandidatos->Active = true; FPrincipal->DBGCandidatos->DataSource = FPrincipal->DSListacandidatos; ¿Se os ocurre algo? |
#5
|
||||
|
||||
puess....
personalmente creo que es por el "ECodigo->Text"...., lo del ; esta bien. Esto es porque para pasar parametros a una consulta, no se puede meter en la cadena de la consulta un componente...solo se puede poner SQL!!!
para meter un parametro es asi: Cita:
Un saludo Antonio |
#6
|
|||
|
|||
Localizado el problema
El problema esta en el active:
FPrincipal->ADOQListacandidatos->Active = true; Si lo quito lo inserta bien y no da fallo, pero el problema es que entonces al volver a mostrar el formulario principal no me muestra los registros, y si pongo el active me da fallo. ¿Como puedo solucionarlo?. Gracias por todo. |
#7
|
|||
|
|||
Lo he solucionado asi
ADOQInsertar->SQL->Clear();
ADOQInsertar->SQL->Add("INSERT INTO candidatos(Id) VALUES(\""+ECodigo->Text.Trim()+"\")"); FPrincipal->DSListacandidatos->DataSet = ADOQInsertar; ADOQInsertar->ExecSQL(); //ADOQInsertar->Active = true; //Esta queda inactiva FPrincipal->DSListacandidatos->DataSet = ADOQInsertar; FPrincipal->ADOQListacandidatos->Active = true; FPrincipal->DSListacandidatos->DataSet = FPrincipal->ADOQListacandidatos; FPrincipal->ADOQListacandidatos->Close(); Y cuando cierro el formulario hago: FPrincipal->ADOQListacandidatos->Open(); El problema que tengo ahora es que no se como hacer para insertar dos campos a la vez, es decir: ADOQInsertar->SQL->Add("INSERT INTO candidatos(Id,Nombre) VALUES(\""+ECodigo->Text.Trim()+" Segundo campo \")"); porque he probado con \"," y todo eso me da fallo. Un saludo. |
#8
|
|||
|
|||
Solucionado
ADOQInsertar->SQL->Add("INSERT INTO candidatos(Id,Nombre) VALUES('"+ECodigo->Text.Trim()+"','"+ENombre->Text.Trim()+"')");
Gracias a tod@s |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|