| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
DarkSpawn Lt JG


Registrado: 19 Mar 2005Mensajes: 72Ubicación: Coquimbo Chile
|
Publicado: Mie 27 Jun, 2007 1:47 am Asunto: Eliminar datos, problema con espacios. |
|
|
Buenas, estoy tratando de eliminar datos de una tabla, especificamente un registro con un nombre y apellido determinado. estoy probando esto:
| Código: | Query2->Close();
Query2->SQL->Clear();
String algo = DBEdit2->Text +" "+ DBEdit3->Text;
Query2->SQL->Add("Delete from Ventas where Nombres = "+algo);
Query2->ExecSQL();
|
DBEdit2->Text es un Nombre y
DBEdit3->Text es un Apellido
sin embargo al ejecutar el codigo lanza un error, que el toquen "EL APELLIDO" es un token no valido.. en ese caso quize eliminar RANDY MORGADO y me dice que MORGADO no es un token valido.. que estoy haciendo mal?? es como si no me tomase los espacios. _________________ -------------------------------------------
http://mundodigital.foro.st |
|
| Volver arriba |
|
 |
ercea Ens

Registrado: 07 May 2007Mensajes: 48
|
Publicado: Mie 27 Jun, 2007 2:28 am Asunto: |
|
|
Pero tu tabla consta de un nombre y un apellido por separado, o un solo atributo que es el nombre y apellido juntos?
Si es el primer caso para eliminar podrías hacer siguiendo tu esquema:
| Código: | Query2->Close();
String algo1 = DBEdit2->Text;
String algo2 = DBEdit3->Text;
Query2->SQL->Add("Delete from Ventas where Nombres = " + algo1 + " AND Apellidos = " + algo2);
Query2->ExecSQL();
|
Sino, también estoy pensando que puede ser porque tu variable "algo", sustituye la cadena de texto pero para que sea correcta la sentencia, dicha cadena debe de ir entre ' o "", por ejemplo, en tu caso, tal como lo tienes al sustituir, tu sentencia SQL quedaría asi:
Delete from Ventas Where Nombres = Randy Morgado
Cuando la sentencia correcta es
Where Nombres = 'Randy Morgado' (o sino entre"")
Entonces yo probaria escribiendolo así
| Código: | Query2->Close();
String algo = DBEdit2->Text + " " + DBEdit3->Text;
Query2->SQL->Add("Delete from Ventas where Nombres = '" + algo + "'");
Query2->ExecSQL();
|
saludos! |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 27 Jun, 2007 10:41 am Asunto: |
|
|
A lo que intentas hacer le veo un riesgo: Para cada nombre y apellido ¿sólo tienes un registro? Es decir: ¿Sólo tienes, por ejemplo, un José Pérez? Borrando registros exclusivamente por nombre y apellidos puedes borrar el que no quieres por error. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
rivo Lt JG

Registrado: 13 Mar 2004Mensajes: 72Ubicación: Asturias (España)
|
Publicado: Mie 27 Jun, 2007 11:41 am Asunto: |
|
|
como bien dice ercea, al ser nombre un campo de tipo cadena, le faltan las comillas.
y a loq ue dice Angel, tiene razon si eliminas campos por nombre tienes el riesgo de eliminar dos clientes que por casualidad tengan el mismo nombre, en estos casos mejor hacer un tabla con clientes y almacenas los datos que quieres de ellos e identificas a cada uno con un id, unico para cada uno, y luego a las ventas en clientes les asocias el id correspondiente. y para eliminar entonces eliminas las ventas por id asi te aseguras de eliminar las ventas del cliente que deseas.
un saludo!!
Ultima edición por rivo el Mie 27 Jun, 2007 1:53 pm, editado 1 vez |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 27 Jun, 2007 12:58 pm Asunto: |
|
|
| rivo escribió: | | como bien dice ercea, al ser nombre un campo de tipo cadena, le faltan las comillas. |
Probablemente sería mejor actuar con parámetros:
| Código: | Query->Close();
Query->UnPrepare();
Query->SQL->Text = "DELETE FROM Ventas WHERE Nombre = :Nombre AND Apellidos = :Apellidos";
Query->ParamByName("Nombre")->AsString = DBEdit2->Text;
Query->ParamByName("Apellidos")->AsString = DBEdit3->Text;
Query->Prepare();
Query->ExecSQL(); |
_________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
DarkSpawn Lt JG


Registrado: 19 Mar 2005Mensajes: 72Ubicación: Coquimbo Chile
|
Publicado: Mie 27 Jun, 2007 4:45 pm Asunto: |
|
|
| Cita: | | A lo que intentas hacer le veo un riesgo: Para cada nombre y apellido ¿sólo tienes un registro? Es decir: ¿Sólo tienes, por ejemplo, un José Pérez? Borrando registros exclusivamente por nombre y apellidos puedes borrar el que no quieres por error. |
si, mejor lo tomaré desde una clave unica. gracias por las respuestas _________________ -------------------------------------------
http://mundodigital.foro.st |
|
| Volver arriba |
|
 |
|