Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Eliminar datos, problema con espacios.

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Eliminar datos, problema con espacios. Responder citando

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
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.