Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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:
Empezado por ElMug Ver Mensaje
Una manera de vaciar el dataset es mandar un query de select que retorne NADA.
Hola.

A ver... por vaciar el dataset yo interpreto borrar sus datos, pero si lo que deseabas era realizar una consulta vacía ("que retorne NADA"), basta con hacer:
Código SQL [-]
SELECT * FROM NOMBRE_DE_TU_TABLA WHERE 1 = 2

Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 13-08-2012 a las 19:05:47. Razón: ortografía
Responder Con Cita
  #2  
Antiguo 13-08-2012
ElMug ElMug is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 163
Poder: 15
ElMug Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

A ver... por vaciar el dataset yo interpreto borrar sus datos, pero si lo que deseabas era realizar una consulta vacía ("que retorne NADA"), basta con hacer:
Código SQL [-]SELECT * FROM NOMBRE_DE_TU_TABLA WHERE 1 = 2


Saludos.
Si, hay muchas maneras, pero si se quiere codificar, el problema es que no siempre sabras que tabla o que base de datos se va a abrir.

Esto se me ha ofrecido para rodearle a un bug que creo que se relaciona con algun(os) componentes base (creo que el DBGrid) de Lazarus, y no lo pude solucionar.

Tampoco vaciar el dataset me resolvio el problema. Algo dificil de explicar, y ya lo ando resolviendo usando otros componentes.

Gracias!
Responder Con Cita
  #3  
Antiguo 13-08-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por ElMug Ver Mensaje
Si, hay muchas maneras, pero si se quiere codificar, el problema es que no siempre sabras que tabla o que base de datos se va a abrir.
¡¡¡Cómo que no vas a saber qué tabla o base de datos vas a abrir!!!

Cita:
Empezado por ElMug Ver Mensaje
Esto se me ha ofrecido para rodearle a un bug que creo que se relaciona con algun(os) componentes base (creo que el DBGrid) de Lazarus, y no lo pude solucionar.
¿Y a qué bug haces referencia?

Cita:
Empezado por ElMug Ver Mensaje
Tampoco vaciar el dataset me resolvio el problema. Algo dificil de explicar, y ya lo ando resolviendo usando otros componentes.
¿Difícil de explicar?, ¿otros componentes?
Responder Con Cita
  #4  
Antiguo 13-08-2012
ElMug ElMug is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 163
Poder: 15
ElMug Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¡¡¡Cómo que no vas a saber qué tabla o base de datos vas a abrir!!!


¿Y a qué bug haces referencia?


¿Difícil de explicar?, ¿otros componentes?
Bueno, una base de datos tendra que estar conectada, pero no se necesita saber el nombre, cuando ya esta uno conectado.

Igualmente, SQL queries son independientes de estar atados a una tabla. La tabla se especifica en el SQL query. Mi aplicacion arranca sin nombre de base de datos, y sin tablas, y el usuario especifica ya al usarla.

El problema que me encontre es con SQLite3, al correr codigo que abre Blobs o Memos durante OnColEnter. Y es que para jalar los datos usa el nombre de la columna (manda un Query).

Eso trabaja bien, pero al mandar un query a OTRA tabla, se regresa un error diciendo que la columna "X" no existe. La columna X pertenece a la tabla anterior.

Monitoreo el SQL que manda la aplicacion, y NO TIENE NADA que ver con la columna X.

La verdad es que esto ya lo doy por "bug" (despues de muchismos analisis y pruebas) de DBGrid de Lazarus, pues la aplicacion trabaja perfectamente mientras no mande un query a otra tabla. Y por lo pronto no le veo el merito a discutir esto mas alla. Tal vez despues.

Gracias por el interes.

P.S., tambien, con el codigo identico, mientras no se accesen Blobs(imagenes) ni Memos (dentro de OnColEnter), SI SE PUEDE mandar queries a OTRA tabla, perfectamente.

Última edición por ElMug fecha: 13-08-2012 a las 21:42:10.
Responder Con Cita
  #5  
Antiguo 13-08-2012
ElMug ElMug is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 163
Poder: 15
ElMug Va por buen camino
A proposito, a mi esto, en Lazarus, usando SQLite3, vacia el grid:

select * from basurax31429cdr

Pero tal vez no en todos los motores sea asi.
Responder Con Cita
  #6  
Antiguo 13-08-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por ElMug Ver Mensaje
Eso trabaja bien, pero al mandar un query a OTRA tabla, se regresa un error diciendo que la columna "X" no existe. La columna X pertenece a la tabla anterior.
Monitoreo el SQL que manda la aplicacion, y NO TIENE NADA que ver con la columna X.
La verdad es que esto ya lo doy por "bug" (despues de muchismos analisis y pruebas) de DBGrid de Lazarus, pues la aplicacion trabaja perfectamente mientras no mande un query a otra tabla.
Hombre, si vas a hacer un select de unos campos a una tabla y pretendes hacer el mismo select a otra tabla que tiene otros campos... pues es normal que diga que no exista algún campo si, efectivamente, no existe. Eso es lo lógico, no es ningún bug.

Última edición por Casimiro Noteví fecha: 13-08-2012 a las 21:57:48.
Responder Con Cita
  #7  
Antiguo 13-08-2012
ElMug ElMug is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 163
Poder: 15
ElMug Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Hombre, si vas a hacer un select de unos campos a una tabla y pretendes hacer el mismo select a otra tabla que tiene otros campos... pues es normal que diga que no exista algún campo si, efectivamente, no existe. Eso es lo lógico, no es ningún bug.
Ya explique que el query es correcto, y que funciona perfectamente en otra tabla, mientras no se accesen Blobs en OnColumEnter de la tabla anterior.

Y ESO si seria un bug. Lo que tu describes seria algo muy bobo de hacer, si asi fuese.
Responder Con Cita
  #8  
Antiguo 13-08-2012
ElMug ElMug is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 163
Poder: 15
ElMug Va por buen camino
.....ademas, el Query ni siquiera menciona las columnas de la Tabla siguiente.
Responder Con Cita
  #9  
Antiguo 13-08-2012
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por ElMug Ver Mensaje
Ya explique que el query es correcto, y que funciona perfectamente en otra tabla, mientras no se accesen Blobs en OnColumEnter de la tabla anterior.

Y ESO si seria un bug. Lo que tu describes seria algo muy bobo de hacer, si asi fuese.
Pues.... me parece que en el evento OnColumnEnter, deberías trabajar un poco más para validar el tipo de campo, dependiendo del campo que actué en consecuencia, digo, es lo más lógico.

Saludos
Responder Con Cita
  #10  
Antiguo 13-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por ElMug Ver Mensaje
Si, hay muchas maneras, pero si se quiere codificar, el problema es que no siempre sabras que tabla o que base de datos se va a abrir.
En algunos motores (SQLite, MySQL, por ejemplo) puede hacerse esto:

Código SQL [-]
select 1 limit 0;

que regresa un resultado vacío sin tener que referirse a una base o tabla específica.

// Saludos
Responder Con Cita
  #11  
Antiguo 13-08-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
Código SQL [-]select 1 limit 0;
Qué curioso, sin especificar ninguna tabla.
En firebird se puede hacer que devuelva cero registros indicando alguna tabla del sistema:

Código SQL [-]
select first 0 * from RDB$DATABASE

No es lo mismo
Responder Con Cita
  #12  
Antiguo 13-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Estas seguro que firebird no admite esta consulta?

Código SQL [-]
select 1

// Saludos
Responder Con Cita
  #13  
Antiguo 13-08-2012
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
¿Estas seguro que firebird no admite esta consulta?

Código SQL [-]
select 1

// Saludos
De poder se puede, pero no tiene sentido

Saludos

Última edición por egostar fecha: 12-08-2013 a las 17:06:09.
Responder Con Cita
  #14  
Antiguo 13-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Qué curioso! ¿Cuántos registros devuelve? ¿O es infinito?

// Saludos
Responder Con Cita
  #15  
Antiguo 13-08-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Sí, lo admite, pero para otra cosa, fíjate en el ejemplo:

EDITO: se me adelantó egostar
Imágenes Adjuntas
Tipo de Archivo: jpg ejm1.jpg (35,7 KB, 7 visitas)
Responder Con Cita
  #16  
Antiguo 13-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Sí, lo admite, pero para otra cosa, fíjate en el ejemplo:

EDITO: se me adelantó egostar
¿Cuál otra cosa?

Y si lo admite, ¿a poco no admite esto?

Código SQL [-]
select first 0 1

// Saludos
Responder Con Cita
  #17  
Antiguo 13-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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:
Empezado por roman Ver Mensaje
¿Estas seguro que firebird no admite esta consulta?

Código SQL [-]
select 1

// Saludos
Hola roman.

Así sin más, no.

Si se puede como en el código de la imágen de Casimiro (y supongo que en el de egostar) haciendo referencia a una tabla.

O para evitar referenciar una tabla se podría hacer algo como:
Código SQL [-]
SELECT FIRST 1 NULL FROM RDB$DATABASE

Pero una consulta que no devuelva ni siquiera una constante, nada de nada ... la verdad no lo se.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Dbgrid1, como saber asignarle la ubicacion del cursor? asdbernardo Conexión con bases de datos 4 09-10-2011 21:29:24
dbgrid1 shoulder Varios 12 18-11-2009 17:36:02
Como actualizar Free Pascal felipe88 Lazarus, FreePascal, Kylix, etc. 8 10-11-2008 16:58:14
DBGrid1 en Memo1 gsilvei Varios 1 09-12-2006 15:06:12
¿¿¿DBGrid1.FixedCols := n;??? Sergio J. Varios 2 02-12-2005 10:28:31


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


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