FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Borrar datos con IBX y FB2.0
Hola!!
En el dataset editor (IBDataSet) tengo esta sentencia para DeleteSQL:
Pero en lo real quiero hacer esto:
Me da un mensaje de Horror que dice: Cita:
¿Que estoy haciendo mal?
__________________
ESTO ES UN FORO ... NO UN MÓVIL ¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender? |
#2
|
|||
|
|||
Hola, hice la siguiente prueba con una tabla de mi base de datos y me funcionó bien. Mi base de datos es Firebird 1.5.5. Lo diferente es que utilicé un objeto TIBQuery en vez de un TIBDataset, este ultimo objeto lo utilizo para navegación y manipulacion de registros.
Me parece que es mas apropiado un TIBQuery o incluso es mejor un TIBSQL pues estas lanzando eliminaciones de registros.
__________________
Luis Fernando Buelvas T. |
#3
|
|||
|
|||
Gracias por tu respuesta Luis Fernando, lo voy a probar aunque aun me queda la duda, pues se supone que El IBDataset es un producto de dos componentes IBX como son el el IBQuery y el IBUpdateSql y deberia tener la capacidad de hacer lo que intento, en fin se me hace que ¡¡he vivido engañado!!
__________________
ESTO ES UN FORO ... NO UN MÓVIL ¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender? |
#4
|
|||
|
|||
pues no!
Algo anda mal, no me funciona. Tal vez estoy mal en el concepto de lo que quiero hacer. Tengo una tabla: ID - Bascula - campoX - CampoY ========================= 1 1 xx yy 2 2 xx yy 3 3 xx yy 4 4 xx yy || || || 1150 1 xx yy 1151 2 xx yy 1152 3 xx yy 1153 4 xx yy Lo que necesito es borrar todos los registros que cumplan la condicion del indice (1 o 2 o 3 o 4) de la consulta por eso
¿?¿? NPI
__________________
ESTO ES UN FORO ... NO UN MÓVIL ¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender? |
#5
|
|||
|
|||
Lo que pasa es que los TIBDataset exigen que exista una clausula select, las demas propiedades SQL son opcionales y creo que tu no utilizas el select.
Me da la impresion que por esos lados puede ser el problema, porque en tu tabla no existe un campo 'Borrar'. Bueno estas con Firebird 2 y yo no he trabajado con esa version. Porque no pruebas con el nombre del parametro en mayusculas 'BORRAR'. La otra posibilidad aunque queda algo feo es cambiar tu segmento de codigo de manera que no utilices parametros, asi:
Si no te funciona porque no utilizas un procedimiento almacenado.
__________________
Luis Fernando Buelvas T. |
#6
|
||||
|
||||
¡¡ quieto parao !!
Me parece que estás complicando la cosa mucho, lo simple es esto: - En el ibdataset, escribe el selectSQL, típico: select * from tabla - ahora clic derecho en el tibdataset y elige la opción "dataset editor" - Obtienes una ventana donde puedes elegir la tabla y los campos, por defecto te aparece la sql de select que escribiste antes y en esta ventana: - configura un dbnavigator que apunte a ese datasource - Listo, ya puedes borrar registros, añadir, modificar y seleccionar. Las SQLs ya no tienes que tocarlas para nada, ni tampoco pasarle parámetros, se usará el registro que esté en pantalla (obviamente moviéndote con el dbnavigator). Edito: Aunque puedes configurar la propiedad DeleteSQL para borrar un grupo de registros, no lo considero oportuno, el DELETESQL es para el registro que se encuentre activo. Si necesitas borrar un grupo de registros, usa un Query o un procedimiento almacenado. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 15-10-2008 a las 10:33:23. |
#7
|
|||
|
|||
Hola!
Lepe, Luis Fernando, todo el procedimiento que me describen sobre la generacion de la sentencia SELECT y la configuracion a traves del Dataset Editor ya esta realizado, eso ya lo tenia desde el inicio, el detalle esta en esto ultimo que me explicas Lepe, yo quiero cambiar la sentencia DELETE que genero el Dataset editor, pero si no sirve para lo que quiero (borrar un grupo de registros) entonces si debo de cambiar de estrategia -en este caso componente- Ya les comentare que paso.
__________________
ESTO ES UN FORO ... NO UN MÓVIL ¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender? |
#8
|
|||
|
|||
Pues ya cambie a un query y ahora me resulta algo mas interesante..
al ejecutar me aparece esto --------------------------- Debugger Exception Notification --------------------------- Project Captura.exe raised exception class EIBInterBaseError with message 'Dynamic SQL Error SQL error code = -104 Token unknown - line 1, column 8 *'. Process stopped. Use Step or Run to continue. --------------------------- OK Help --------------------------- es decir que ¡¡no reconoce a *!! ¿que tiene ese DELETE que lo hace tan complicado?
__________________
ESTO ES UN FORO ... NO UN MÓVIL ¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender? |
#9
|
||||
|
||||
Hola FGarcia,
No dejes que el SQL te quite el sueño. El tema del DELETE y el asterisco es que se debe a dos cosas: 1. O Borras todo el registro o no borras nada. No puedes pedirle al motor que borre algunos campos. El DELETE afecta a todo el registro, por tanto no le interesa cuantos campos tenga. 2. Como corolario de 1, el estándar SQL definió que la sentencia DELETE se establezca del siguiente modo:
Saludos, Última edición por Delphius fecha: 15-10-2008 a las 18:40:57. Razón: me equivoqué de etiquetas |
#10
|
|||
|
|||
Delphius NO quiero borrar campos de un registro. Quiero borrar todos los registros que cumplan con la condicion de campo "bascula = indice"; es decir que si tengo el indice con valor 3 entonces todos los registros cuyo valor de campo (bascula) sea igual a 3 sean borrados de la tabla. El * definitivamente no lo reconoce el DELETE. La sentencia "DELETE FROM TABLA" borra perfectamente toda la tabla.
Hay algo que no comprendo en esto de firebird e IBX, con Access esto funciona bastante facil.
__________________
ESTO ES UN FORO ... NO UN MÓVIL ¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender? |
#11
|
||||
|
||||
A ver amigo, tal vez no me expliqué bien, el tema del asterisco en un DELETE es que no responde al estandar SQL. Una sentencia SQL del tipo DELETE no espera ningún asterisco, espera la orden que le informe cuantos o cuales registros debe borrar.
El asterisco sólo tiene sentido en un SELECT, puesto que se espere que regrese todos los campos que forman al registro. Me extraña que tengas problemas, esta consulta SQL debería funcionarte:
Saludos, |
#12
|
|||
|
|||
Bueno, despues de andar reinventando el hilo negro y no se que carajos traia en la cabez esto quedo asi:
¡Gracias por la ayuda!
__________________
ESTO ES UN FORO ... NO UN MÓVIL ¿Por qué no escribir de una manera comprensible para que los humanos lo podamos entender? |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
como borrar datos de una tabla | majuub | Varios | 6 | 23-05-2007 19:07:30 |
Borrar todos los datos de una tabla | dariana20 | SQL | 8 | 07-06-2006 17:09:04 |
Borrar datos duplicados | Sr.Scorpion | Conexión con bases de datos | 4 | 20-06-2005 19:52:57 |
borrar datos de varias tablas | davidfp | SQL | 1 | 02-06-2005 18:23:47 |
Borrar datos de tablas | JuanSB | MS SQL Server | 2 | 11-10-2004 17:03:14 |
|