Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-10-2011
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 23
RONPABLO Va por buen camino
Cita:
Empezado por salvica Ver Mensaje


No, si lo que quiero es escribir los nombres de tabla en minúsculas y que me los reconozca. Vamos para no tener que ir metiendo UpperCase() por todo el código.

Esto funciona con MySql, SQLite, Oracle (vamos con todos, menos con mi Firebird)
Saludos
salvica

Ahora con lo de ir metiendo UpperCase me queda una duda:


Código SQL [-]
Select * from MITABLA

y

Código SQL [-]
Select * from MiTabla

Alguno de las dos consultas pone algún problema? o el problema es cuando hace la consulta a la tabla del sistema y compara los nombres de los campos allá y todos los encuentra en mayúsculas?
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #2  
Antiguo 31-10-2011
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 23
salvica Va por buen camino
Hola de nuevo RONPABLO, te estoy dando la noche

Son dos cosas diferentes:
  • El error de excepción: Me lo dá cuando hago el Open en la ZQuery de ZeosDBO.
Si elimino a "mano" la tabla y en el código del programa quito la línea que comprueba la existencia de la tabla, el mismo ZQuery efectúa un CREATE TABLE mitabla sin problemas, con lo que (inicialmente), la conexión es correcta, el enlace del ZQuery con el ZConnection es correcto y el ZQuery trabaja como se espera.
  • Lo de las mayúsculas: Otro cantar, que no sé si es por el manejador FlameRobin que viene con Firebird o qué.
Por ejemplo, yo creo una tabla:
Código SQL [-]
    with ZQuery do begin
         SQL.Clear;
         SQL.Add( 'CREATE TABLE mitabla (' );
         SQL.Add( '       NUM_REG     INTEGER        NOT NULL,' );
         SQL.Add( '       ID_CLAVE    CHAR(8)        NOT NULL,' );
         SQL.Add( '       CORRECTO    CHAR(1)        DEFAULT ''0'' NOT NULL,' );
         SQL.Add( '       TEXTO       VARCHAR(80)'    );
         SQL.Add( ');' );
         SQL.SaveToFile( PathSql+'\SQL_CrearTabla_mitabla.sql');
         try
           ExecSQL;
         except
           SQL.SaveToFile( PathSql+'\ERROR_SQL_CrearTabla_mitabla.sql');
         end;
         Close; { cerrar la tabla por si queda abierta }
    end; { del with ZQuery do }

Esto funciona sin problemas , ahora voy al FlameRobin (gratis) o al SQL Maestro for Firebird (de pago, pero bastante bueno, yo lo uso con SQLite) y ejecuto la consulta
Código SQL [-]
SELECT COUNT(*) AS existe
  FROM rdb$relations
 WHERE rdb$relation_name = 'MITABLA'
El campo EXISTE vale UNO (1), ha encontrado la tabla creada.

Si cambio la consulta por:
Código SQL [-]
 SELECT COUNT(*) AS existe
   FROM rdb$relations
  WHERE rdb$relation_name = 'mitabla'
El campo EXISTE vale CERO (0), no ha encontrado la tabla creada.
Esto si que es un "rollo"

Saludos
salvica
Responder Con Cita
  #3  
Antiguo 01-11-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is online now
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Si das de alta (creas) una tabla, campos, store procedure, etc. SIN poner comillas, entonces lo podrás usar escribiéndolo como quieras, mayúsculas o minúsculas.
Pero si lo das de alta CON comillas, entonces luego tienes que llamarlo exactamente igual a como lo diste de alta.
Resumiendo:
caso 1:
create tabla TABLA
es lo mismo que
create tabla tabla

pero:
caso 2:
create tabla 'TABLA'
es distinto a
create tabla 'tabla'

En el caso 1, podrás usar: select TABLA, select tabla, select TaBlA, select tAbLa, etc.
en el caso 2, sólo podrás usar 'TABLA'.

Por ese motivo yo siempre doy de alta (lo creo) todo sin comillas. Como el primer caso.
Responder Con Cita
  #4  
Antiguo 01-11-2011
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 23
RONPABLO Va por buen camino
Cita:
Empezado por salvica Ver Mensaje
Hola de nuevo RONPABLO, te estoy dando la noche

Son dos cosas diferentes:
  • El error de excepción: Me lo dá cuando hago el Open en la ZQuery de ZeosDBO.
Si elimino a "mano" la tabla y en el código del programa quito la línea que comprueba la existencia de la tabla, el mismo ZQuery efectúa un CREATE TABLE mitabla sin problemas, con lo que (inicialmente), la conexión es correcta, el enlace del ZQuery con el ZConnection es correcto y el ZQuery trabaja como se espera.

Has mirado si hay una versión más nueva de los componentes, puede que con actualizarlos se arreglen.


Cita:
Empezado por salvica Ver Mensaje

Lo de las mayúsculas: Otro cantar, que no sé si es por el manejador FlameRobin que viene con Firebird o qué.
Por ejemplo, yo creo una tabla:
Código SQL [-] with ZQuery do begin SQL.Clear; SQL.Add( 'CREATE TABLE mitabla (' ); SQL.Add( ' NUM_REG INTEGER NOT NULL,' ); SQL.Add( ' ID_CLAVE CHAR(8) NOT NULL,' ); SQL.Add( ' CORRECTO CHAR(1) DEFAULT ''0'' NOT NULL,' ); SQL.Add( ' TEXTO VARCHAR(80)' ); SQL.Add( ');' ); SQL.SaveToFile( PathSql+'\SQL_CrearTabla_mitabla.sql'); try ExecSQL; except SQL.SaveToFile( PathSql+'\ERROR_SQL_CrearTabla_mitabla.sql'); end; Close; { cerrar la tabla por si queda abierta } end; { del with ZQuery do }


Esto funciona sin problemas , ahora voy al FlameRobin (gratis) o al SQL Maestro for Firebird (de pago, pero bastante bueno, yo lo uso con SQLite) y ejecuto la consulta
Código SQL [-]SELECT COUNT(*) AS existe FROM rdb$relations WHERE rdb$relation_name = 'MITABLA'

El campo EXISTE vale UNO (1), ha encontrado la tabla creada.

Si cambio la consulta por:
Código SQL [-] SELECT COUNT(*) AS existe FROM rdb$relations WHERE rdb$relation_name = 'mitabla'

El campo EXISTE vale CERO (0), no ha encontrado la tabla creada.
Esto si que es un "rollo"

Saludos
salvica
Es curioso, para mi ese es el funcionamiento que debe de tener una consulta, el identificar la diferencia entre mayúsculas y minúsculas es lo que me espero en un "Where Campo = 'Valor', ahora si la consulta solo la construye una sola vez y la llama muchas veces mandando el nombre de la tabla como parametro entoces podría hacer el Upper en la consulta y no en el código Delphi y así no se va a llenar de UpperCase, ya si la consulta la construye siempre pues esto sería casi igual.
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #5  
Antiguo 01-11-2011
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 23
salvica Va por buen camino
Thumbs up Doy por cerrado el tema

Agradezco a todos la ayuda y sus experiencias

Me disteis una buena pista cuando pusiste en duda la compatibilidad de ZeosDBO con Firebird 2.5

En este post y en este otro, comentaban que el sistema les daba la dichosa excepción al hacer Open en un select normalito, y que lo habian solucionado reinstalando Firebird a su versión 2.1.

¡¡¡ Efectivamente !!!

Me habia leido casi todos los post que hablaban de ZQuery+firebird en ésta plataforma y no había sido capaz de verlo

Gracias a San Google y buscando por "TZQuery Access violation at address 00000000. Read of address 00000000" me trajo a los enlaces arriba señalados.

Gracias de nuevo a todos

salvica

Última edición por salvica fecha: 01-11-2011 a las 15:33:18. Razón: Agradecimientos
Responder Con Cita
  #6  
Antiguo 02-11-2011
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
El problema con las diferencias entre mayúsculas y minúsculas se debe a que IBExpert permite establecer si se desea que los objetos se escriban siempre en mayúsculas o no. Cuando creas y registras una tabla hay un checkbox que dice algo "Upercase all objects" o parecido.
Si desactivas esta opción (por defecto está activada) conseguirás que tu tablas, campos, consultas, etc... todo lo que escribas respete y distinga mayúsculas de minúsculas. Y no termina allí la historia sino que además te ves obligado a hacer uso de comillas dobles.

Aunque esto no es en realidad algo de IBExperts, es una configuración de Firebird. Aunque no recuerdo cuál.

El estándar SQL sugiere que SIEMPRE se escriba todo en MAYÚSCULAS, pero se deja al usuario la posibilidad de alterar este comportamiento si así lo considera oportuno.

A mi en lo personal me resulta desagradable leer todo en mayúsculas, parece que me estuviera gritando. Pero tampoco me agrada tener que estar utilizando comillas dobles.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 03-11-2011
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Poder: 23
salvica Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
El problema con las diferencias entre mayúsculas y minúsculas se debe a que IBExpert permite establecer si se desea que los objetos se escriban siempre en mayúsculas o no. Cuando creas y registras una tabla hay un checkbox que dice algo "Upercase all objects" o parecido.
Si desactivas esta opción (por defecto está activada) conseguirás que tu tablas, campos, consultas, etc... todo lo que escribas respete y distinga mayúsculas de minúsculas. Y no termina allí la historia sino que además te ves obligado a hacer uso de comillas dobles.
Saludos,
Hola Delphius

El problema real era que (no se por qué) me "obligaba" a introducir los nombres de tabla y los nombres de campo en mayúsculas.

El contenido de los campos fué culpa mia, ya que creé la tabla con el collate ES_ES y lo tenía que haber creado con ES_ES_CI_CA (creo, que hora no tengo el manual) para ser insensible a mays. mins.

Ahora he bajado a la versión 2.1.4 (para poder seguir utilizando ZeosDBO).

Como tengo que hacer otra aplicación (leer ficheros csv), la haré con los IB (que dicen que son más rápidos)

Saludos
salvica
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
Novato: Guardar a Firebird desde un edit juanmfer2002 Firebird e Interbase 2 09-03-2008 18:22:59
Novato en firebird ckaki Firebird e Interbase 2 01-07-2006 12:00:00
Novato en Firebird Delphos Firebird e Interbase 5 21-01-2005 17:07:47
Novato en firebird, tengo una duda chakal Firebird e Interbase 2 03-03-2004 13:48:49
Novato en Firebird y IB( Que sera mejor para agregar, Modificar, ect) IcebergDelphi Firebird e Interbase 2 04-06-2003 05:56:16


La franja horaria es GMT +2. Ahora son las 14:12:38.


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