Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-11-2005
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 22
OSKR Va por buen camino
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;
unir las lineas de la sentencia, ya q no recuerdo si el Add agrega al final del texto o agrega una nueva linea, otra cosa...no veo el Id, el primer error q mencionas es raro, pero antes de insertar yo me aseguraria q la longitud del ENombre->Text.Trim() fuera distinta de 0 xq sino estaria mandando una cadena nula.........ves ?, otra mas.........creo q deberias encerrar entre comillas o comillas dobles el nombre (xq supogo q es una cadena), seria algo asi....
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()+"\");");
dependiendo de tu BD, hay algunas q aceptan de las 2, suerte
__________________
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.
Responder Con Cita
  #2  
Antiguo 03-11-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
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.
Código SQL [-]
Insert.... --etc
Values(...); -- punto y coma????? seguro?????

Cita:
Empezado por OSKR
no recuerdo si el Add agrega al final del texto o agrega una nueva linea
cada instruccción Add es una nueva línea en la instrucción SQL.

Coincido con el detalle de las comillas al momento de pasar el nombre...
__________________

Responder Con Cita
  #3  
Antiguo 04-11-2005
Ivan_25 Ivan_25 is offline
Miembro
 
Registrado: oct 2005
Posts: 87
Poder: 21
Ivan_25 Va por buen camino
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?
Responder Con Cita
  #4  
Antiguo 04-11-2005
Avatar de alt126
alt126 alt126 is offline
Miembro
 
Registrado: dic 2004
Posts: 171
Poder: 22
alt126 Va por buen camino
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:
Datos->Consulta->SQL->Clear();
Datos->Consulta->SQL->Add("SELECT Campo1 FROM Tabla WHERE Campo2=:a;");
Datos->Consulta->Params->Items[0]->AsString = "lo que quieras";
...
Prueba eso a ver que tal. Porque el componente Edit ese que metes, yo creo que lo toma como una cadena de texto y no como un componente...de todas maneras te vuelvo a comentar, que las consultas, las pruebes antes en la BD, y cuando veas que es correcto lo que hace, la metas en codigo...te ahorraras muchos dolores de cabeza.

Un saludo

Antonio
Responder Con Cita
  #5  
Antiguo 04-11-2005
Ivan_25 Ivan_25 is offline
Miembro
 
Registrado: oct 2005
Posts: 87
Poder: 21
Ivan_25 Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 04-11-2005
Ivan_25 Ivan_25 is offline
Miembro
 
Registrado: oct 2005
Posts: 87
Poder: 21
Ivan_25 Va por buen camino
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.
Responder Con Cita
  #7  
Antiguo 04-11-2005
Ivan_25 Ivan_25 is offline
Miembro
 
Registrado: oct 2005
Posts: 87
Poder: 21
Ivan_25 Va por buen camino
Solucionado

ADOQInsertar->SQL->Add("INSERT INTO candidatos(Id,Nombre) VALUES('"+ECodigo->Text.Trim()+"','"+ENombre->Text.Trim()+"')");

Gracias a tod@s
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 23:45:47.


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