Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-09-2011
mellomda mellomda is offline
Miembro
 
Registrado: sep 2010
Ubicación: mar de ajo, partido de la costa, buenos aires, argentina
Posts: 16
Poder: 0
mellomda Va por buen camino
Eliminar Registro Con ADODataSet

Hola Gente, espero me puedan ayudar. estuve buscando en el foro y encontre temas relacionados pero no la solucion a mi problema...

el Problema que tengo es el siguiente:
Estoy usando ADO para conectarme a una base de datos SQL con Delphi; Utilizo un ADOConection Para Establecer la conexion con la base de datos, y diferentes ADODataSets para mostrar los datos de las diferentes tablas y para realizar las consultas. el problema es cuando intento eliminar un registro... Hago lo siguiente:

1- Consulta: String;
2- Consulta := 'Delete From ' + Tabla + ' Where ' + Campo + ' = ' + Dato;
3- ADODataSet.Active := False;
4- ADODataSet.CommandText := SQL;
5- ADODataSet.Active := True;

1- Declaro Una Variable Auxiliar De Tipo String Para Asignarle la Consulta
2- Le Asigno la Consulta a la Variable Auxiliar
3- Desconecto el DataSet Para Poder Realizar La Consulta
4- Ingreso la Consulta Al DataSet
5- Vuelvo a Conectar el DataSet Para Realizar La Consulta y Reflejar Los Resultados

Teoricamente No hay errores, ya que luego de ultima instruccion el registro queda eliminado, el programa sigue andando y los resultados reflejados en el DBGrid son correctos, Pero me sale un cartel (Cada vez que elimino un registro) que dice lo siguiente:

'ADODataSet: CommandText Does Not Return A Result Set'

Analizando un poco lo que dice, suena logico, ya que la consulta realizada no devuelve ningun dato (o conjunto de datos), pero en fin, como le hago sino para eliminar un registro sin que aparezca ese molesto cartel cada vez que se realiza la operacion???
Responder Con Cita
  #2  
Antiguo 09-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
en lugar del active usa execsql
para cuando abras el query
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 09-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

No soy experto en ADO pero el componente TADoDataSet tiene el método Delete que cumple el cometido que estás buscando mediante la sentencia SQL.

Código Delphi [-]
  ADODataSet1.Delete;
Y no necesita ser cerrado y abierto para ejecutarlo


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 09-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

El equivalente a lo que buscas hacer sería:
Código Delphi [-]
  with ADODataSet1 do
  begin
    Close;
    CommandText:= 'SELECT * FROM ' + TABLA + ' WHERE OrderNo = ' + DATO;
    Open;
    Delete;
  end;
En este caso sí es necesario cerrarlo y abrirlo pero por la búsqueda, el método Delete en sí no lo requiere, solo elimina el dato previamente seleccionado.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 09-09-2011
mellomda mellomda is offline
Miembro
 
Registrado: sep 2010
Ubicación: mar de ajo, partido de la costa, buenos aires, argentina
Posts: 16
Poder: 0
mellomda Va por buen camino
Gracias

Muchisimas gracias!!!!! lo voy a probar mañana y les comento. Disculpen la demora, no sabia que me ivan a contestar tan rapido, gracias...
Responder Con Cita
  #6  
Antiguo 09-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
pues aqui tienes una idea de la frecuencia en la que entran las personas y saques tus conclusiones
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #7  
Antiguo 10-09-2011
mellomda mellomda is offline
Miembro
 
Registrado: sep 2010
Ubicación: mar de ajo, partido de la costa, buenos aires, argentina
Posts: 16
Poder: 0
mellomda Va por buen camino
Problemas con el 'As' al Eliminar Registro Con ADO

Genteee, muchisimas gracias a todos, me anduvo de lujo el codigo que me pasaron. Espero no molestarlos, pero ahora me surgio otro problema, quizas me puedan ayudar. Cuando levanto los datos de las tablas SQL (Con el ADODataSet), lo hago mediante una consulta SQL, pero uso el 'As' Para que los titulos de los campos se muestren diferente

Ejemplo: Select ID As Codigo, RacSoc As [Razon Social].....Etc).

Loa Datos Se muestran bien, las consultas se realizan bien, pero a la hora de eliminar un registro Con las siguientes instrucciones (Gracias ecfisa):
Código Delphi [-]
  with ADODataSet1 do   
  begin     
     Close;     
     CommandText:= 'SELECT * FROM ' + TABLA + ' WHERE OrderNo = ' + DATO; 
     Open;     
     Delete;   
  end;
Me dice que no encuentra el Campo 'Codigo'.

Nota: En El DataSet tengo los campos agregados como persistentes (Add All Fields) y estos campos se agregan pero con el alias (Codigo, Razon Social, etc.). El problema queda resuelto cuando saco 'TODOS' los As de la consulta SQL, pero los titulos de las columnas en el DBGid quedan feos (ID, RacSoc, Etc.).

Espero que me hayan entendido, y espero no molestarlos, desde ya muchas gracias, por ayuda...

Última edición por ecfisa fecha: 10-09-2011 a las 04:19:43. Razón: Etiquetas [delphi] [/delphi]
Responder Con Cita
  #8  
Antiguo 10-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
El problema queda resuelto cuando saco 'TODOS' los As de la consulta SQL, pero los titulos de las columnas en el DBGid quedan feos (ID, RacSoc, Etc.).
Hola mellomda.

Si tenés los agregados los campos persistentes hacé lo siguiente: Abrí el Fields Editor y en la propiedad DisplayLabel de cada uno de los campos, ingresá el texto que deseas que se muestre.

De no tenerlos agregados (o sí), también podés indicarle (en el evento OnShow del form por ejemplo) el texto a mostrar de este modo:
Código Delphi [-]
  ADODataSet1.FieldByName('NOMBRE_DEL_CAMPO').DisplayLabel:= 'LO QUE QUIERO QUE MUESTRE';
  ...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 10-09-2011 a las 04:20:25.
Responder Con Cita
  #9  
Antiguo 10-09-2011
mellomda mellomda is offline
Miembro
 
Registrado: sep 2010
Ubicación: mar de ajo, partido de la costa, buenos aires, argentina
Posts: 16
Poder: 0
mellomda Va por buen camino
Gracias!!!

Perfecto!!!!! Gracias ecfisa. Todo anduvo perfecto, muchisimas gracias por tu ayuda y tu tiempo...
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Eliminar Registro agustin173 Varios 27 09-12-2010 16:18:02
Eliminar Registro agustin173 Varios 9 13-10-2010 06:32:41
eliminar un registro pronto7 SQL 1 21-06-2010 20:33:21
Eliminar registro Zakio14 Firebird e Interbase 5 20-03-2008 07:07:07
Eliminar registro de un .mdb con ADO ¥0n1 Conexión con bases de datos 2 07-11-2007 11:29:12


La franja horaria es GMT +2. Ahora son las 18:01:18.


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