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 06-06-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Caral, veo que estas expandiendo tus conocimientos, experiencia y estas con ganas de dedicarle a Firebird. Me parece fabuloso.

Quiero agregar que como la versión gratuita de IBExpert no cuenta con el modelo relacional (DER) y algunas veces a uno le hace falta tener una vista rápida de como están relacionadas las tablas... puedes valerte de otro utilitario para diseñado para esto: IBUtils.

A mi me recomendaron, lo empecé a usar... y me sirve mucho.

Saludos,
PD: ¡Exitos con Firebird!
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #2  
Antiguo 06-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Gracias por ayudarme.
Ya hice una base de datos, la cree sin problemas y la pude ver desde IBexpert.
Conecte el odbc a la base de datos creada y pase varias tablas para ver, esto lo hizo sin problemas con el datapump de delphi.
Tengo dudas, aqui van:
A la hora de crear la base de datos hay una opción que se llama Charset, en esta hay un monton de opciones, en el ejemplo que vi ponen win1252 y asi lo hice yo.
Ahora mi duda:
Para que es esto?
Tiene que ver con el codigo sql?
Lo indico porque a la hora de pasar varias tablas el campo tipo boleano en access lo convierte en varchar, es mas o menos similar a lo que pasaba con mysql.
Hay algun campo boleano en firebird ?, cual es?
Creo que de momento voy bien, por lo menos ya arranque.
Otra cosa, pude conectarme desde delphi con zeos, no lo pude hacer por odbc con ado, me indica casualmente este asunto, que se cambiaron los datos o algo asi, por que sera?
No me pude conectar con IB, me dice que me hace falta una transaccion, no se que sera.?, estos componentes no los conozco.
Gracias por seguir ayudandome.
Nota: estoy contento, ya estoy en firebird.
Saludos
Responder Con Cita
  #3  
Antiguo 06-06-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
El Charset es el conjunto de caracteres que va a usar tu base de datos...

Mayormente para español se usa ISO8859_1 (al menos es el que yo uso)...

El Charset también te sirve para poder especificar el tipo de ordenamiento de una columna, por ejemplo:

Código SQL [-]
CREATE TABLE PERSONA (
  ID INTEGER NOT NULL;
  NOMBRE VARCHAR(50) NOT NULL CHARSET ISO8859_1 COLLATE ES_ES
);

ALTER TABLE PERSONA ADD PRIMARY KEY (ID);

Firebir 2.x si tiene el tipo BOOLEAN para las columnas.

Para conectarte con las IBX necesitas poner un TIBDatabase y un TIBTransaction en la forma y establecer la propiedad DefaultTransaction del TIBDatabase para que use el TIBTransaction y el TIBTransaction en su propiedad Database que apunte al TIBDatabase. (Espero haberme explicado )



Saludos...
Responder Con Cita
  #4  
Antiguo 06-06-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Cita:
Empezado por maeyanes
El Charset es el conjunto de caracteres que va a usar tu base de datos...
jaja... ya ves que ayuda no te falta!!
¿soy tan lento?
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 06-06-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 26
vtdeleon Va por buen camino
Cita:
=maeyanes
Firebir 2.x si tiene el tipo BOOLEAN para las columnas.
Seguro?, porque he tratado de hacerlo y nada nadita. De la unica manera que he podido hacer un campo de este tipo es mediante un Domain.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #6  
Antiguo 06-06-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Cita:
Empezado por vtdeleon
Seguro?, porque he tratado de hacerlo y nada nadita. De la unica manera que he podido hacer un campo de este tipo es mediante un Domain.
Fue un error mio... y esto se debe a que Interbase 7.x si tiene el tipo de datos BOOLEAN.

Acabo de verificar y si, Firebird NO cuenta con el tipo de datos BOOLEAN, así que como bien comenta jachguate, se puede usar mediante CHAR(1) o SMALLINT...

O como bien mencionas tu, con un dominio:

Código SQL [-]
CREATE DOMAIN TBOOLEAN AS
  SMALLINT
  DEFAULT 1
  NOT NULL
  CHECK (VALUE IN (0, 1));


Saludos...
Responder Con Cita
  #7  
Antiguo 08-06-2007
Avatar de brakaman
[brakaman] brakaman is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: Castellon - España
Posts: 290
Poder: 20
brakaman Va por buen camino
Pues yo estoy usando Firebird 2.0 y el campo booleano no lo veo por ningun sitio. Cosa que no entiendo la verdad.

Pero los expertos supongo que sabran el motivo.
Responder Con Cita
  #8  
Antiguo 08-06-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Ya aclaré más arriba que fue un error mío el pensar que existía el tipo de datos BOOLEAN en Firebird 2.0...

Aquí te lo pongo de nuevo...

Cita:
Empezado por maeyanes
Fue un error mio... y esto se debe a que Interbase 7.x si tiene el tipo de datos BOOLEAN.

Acabo de verificar y si, Firebird NO cuenta con el tipo de datos BOOLEAN

Saludos...
Responder Con Cita
  #9  
Antiguo 08-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
A la hora de hacer el cambio de access a firebird el campo boolean lo hace automatico a varchar (F o T), es casi lo mismo, en realidad con esto no se tienen problemas, en mysql lo cambia a SmalInt (0 o 1), como comentario.
Hay mas problemas con el campo memo, que lo hace blob, y luego lo lee como string, es un enredo, se tiene que cambiar a tipo texto en access antes de cambiarlo o traspasarlo a firebird, bueno, tampoco es tan complicado, ahora que lo se.
Me siento bien atascado, no salgo de muchas cosas, lo que me esta complicando la vida son las sentencias sql, me estan matando, he logrado modificar varias a ver que pasa, usando los aportes de mis maestros (vosotros), ya entiendo el concepto de case y bueno ya no me da error, los problemas vienen de que las consultas no devuelven los valores que necesito, es muy curioso, en un caso en particular, me devuelve acabado, bodega, creacion, facturacion, pero no produccion, por que, ni idea, lo he revisado por todo lado.
Bueno si no me doy por vencido, seguire intentandolo, por lo menos un rato, que facil es access en comparacion, se que tambien tengo la opcion de ligar la tabla, access - mysql, no me gusta mucho pero funciona, no se si se podra ligar access - firebird, en tal caso no creo que sea una buena opción.
Quien invento el sql y porque lo cambian segun la base de datos, no deberia ser un estandart.
Esto de la programacion es complicado, me estoy dando cuenta de que cada vez soy mas novato, voy para atras.
Saludos
Responder Con Cita
  #10  
Antiguo 08-06-2007
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Poder: 24
fjcg02 Va camino a la fama
Caral,
los campos nulos son nulos, como su propio nombre indica. Es SIN VALOR, ni espacio, ni cadena de longitud cero '', ni nada similar.
Te lo cuento porque a mi en su día me costó encontrar sentido al asunto.

Por ejemplo, si haces una busqueda por un campo distinto de un valor , los registros que lo tengan a nulo no te aparecen porque no tienen valor, y así un montón de cosas.
Lo más simple, es poner los campos como NOT NULL, y cuando sean vacios poner valor = ''. Seguro que algún purista indica algo en sentido contrario, pero qué queremos, funcionalidad y simpleza ante todo . O no?

Saludos no nulos a todos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #11  
Antiguo 08-06-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Cita:
Empezado por Caral
Quien invento el sql y porque lo cambian segun la base de datos, no deberia ser un estandart
El SQL tiene un estándar, y sobre este estándar existen varias versiones... creo que la más reciente es SQL-2003

Ahora, resulta que la gran mayoría de los manejadores de bases de datos incorporan características propias dentro de estos estándares...

Así que si quieres hacer una aplicación que trabaje en varios motores, debes hacer tus consultas SQL usen el estándar estríctamente, esto es, no usar las características de un motor en particular.



Saludos...
Responder Con Cita
  #12  
Antiguo 06-06-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Cita:
Empezado por Caral
A la hora de crear la base de datos hay una opción que se llama Charset, en esta hay un monton de opciones, en el ejemplo que vi ponen win1252 y asi lo hice yo.
Esto es el conjunto de caracteres que usará por defecto tu base de datos, y tiene efecto en los caracteres que acepta y la forma que los ordena en los indices y cuando incluís la clausula Order by en un select (el orden podes especificarlo mas aún con un COLLATE en la sentencia create, alter table o incluso en el propio select).

En nuestro caso (español) el mas recomendable, según mi opinion, es el charset ISO_8859_1, y COLLATION ES_ES. Incluso en Firebird 2 podes usar COLLATION ES_ES_CI_AI, que no es sensible a mayúsculas/minúsculas ni acentos.

Hay mas información en Firebird Character Sets

Cita:
Empezado por Caral
Hay algun campo boleano en firebird ?, cual es?
No hay. Hay quienes usan un VarChar(1) con 'S'/'N', o 'Y'/'N'. Hay otros (como yo) que usan un smallint con 0/1 (al estilo de c)

Cita:
Empezado por Caral
No me pude conectar con IB, me dice que me hace falta una transaccion, no se que sera.?, estos componentes no los conozco.
Está en la paleta... se llama IBTransaction. Una vez en la forma/dm, lo enlazas en la propiedad DefaultTransaction de tu IBDatabase y en la propiedad Transaction de cada Tabla/Query/DataSet/SQL.

El paso a estos componentes, desde BDE/ADO no es fácil, pues todo está mas "crudo". Pero también están los IBObjects, que se parecen mas...

Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #13  
Antiguo 06-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Gracias por las respuestas, efectivamente el campo boolean no lo encuentro por ningun lado:

Cuando hago el tralado de las tablas, me lo convierte en varchar, automaticamente, y lo pone T o F, segun el caso.
Pregunta:
El tipo blob, es memo?
Esta muy bonito, si el campo es numerico sale una calculadora y todo.
Saludos
Responder Con Cita
  #14  
Antiguo 06-06-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Caral, algo, no mucho, de esas cosas te puedo ir respondiendo:

1. Tengo entendido que el CHARSET es el conjunto de caracteres permitidos a usar en la base de datos. Yo lo tengo con el ISO8859_1
Dependiendo del CharSet algunos caracteres pueden que se vean y/o almacenen y otros no...

A decir verdad, me está llamando la atención esto que pones:
Cita:
Empezado por Caral
vi ponen win1252 y asi lo hice yo.
Reconozco que no se mucho de la diferencia entre unos y otros. De que los hay los hay.... Tengo que hacer mejor mi tarea

2. No tiene campo booleano, al menos yo no le encuentro. Hay que ingeniarselas. Por ejemplo usar un campo VARCHAR para que almacene 'SI', 'NO' o un integer (0 para no, 1 para si).

ADo no utilizo. Ni tampoco los Zeos.
Yo empleo los componentes IBX (los de la paleta Interbase) y me funcionan.
Lo que dices sobre transacción es que para conectarse a la base de datos (empleando IBX) necesitas de:
* IBDataBase
* IBTransaction

Fijate que el componente IBDataBase tiene una propiedad DefaultTransaction. A dicha propiedad le asignas el IBTransaction. En DBTransaccion defines que acciones por defecto debe tomar ante una transacción. Por lo general con TACommit ya anda. Los componentes IBX son símiles a otros, no creo que tengas problemas...

Espero que sigas avanzando.
Saludos,

EDITO:
Al pulsar el botón enviar, me he dado con la sorpresa de que ya te habían respondido... y de paso me aclararon mi duda. No me hagas caso... que ya te dieron mejores respuestas más acabadas y certeras los maestros...
¡Gracias!
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 06-06-2007 a las 22:00:15.
Responder Con Cita
  #15  
Antiguo 06-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Voy rapido, creo.
Ya me conecte con ado, con ib y con zeos, la mas rapida es zeos .
Pregunta:
Si en un campo integer o float, la tabla queda en null, afecta en algo?
Hay alguna manera de generar una consulta sql, dentro de IBexpert ?
Si hay forma, se pueden ligar tablas en la consulta, como?
Gracias, voy como bala, con vosotros.
Saludos
Responder Con Cita
  #16  
Antiguo 06-06-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Cita:
Empezado por Caral
Hola
Pregunta:
Si en un campo integer o float, la tabla queda en null, afecta en algo?
Siempre y cuando la columna no haya sido declarada como NOT NULL, no pasa nada...

Cita:
Hay alguna manera de generar una consulta sql, dentro de IBexpert ?
Busca el SQL Editor, desde esa ventana puedes escribir consultas SQL y ejecutarlas...

Cita:
Si hay forma, se pueden ligar tablas en la consulta, como?
Gracias, voy como bala, con vosotros.
Saludos
Si se pueden ligar tablas en una consulta... usando el JOIN:

Código SQL [-]
select a.campo1, a.campo2, b.campo1, b.campo2
from tabla1 a
join tabla2 b on a.campo1 = b.campo1


Saludos...
Responder Con Cita
  #17  
Antiguo 06-06-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Para Lanzar la cosulta desde IBExpert puedes hacerlo con el Editor de SQL.
Te vas a Herramientas, Editor SQL escribes la consulta y das sobre "RUN".

Sinceramente esta parte no entiendo:
Cita:
Empezado por Caral
Si hay forma, se pueden ligar tablas en la consulta, como?
Creo que te refieres a algo como:
Código SQL [-]
select ...
where Tabla1.CampoID = Tabla2.CampoID

Si es eso, no hay problema.

Desde Delphi si hay que tener recaudos con los tipos NULL cuando se dispara una consulta. He visto un post que puso el maestro Lepe en donde explicaba bien esta situación... pero no me acuerdo de donde era... Yo también ando con problemas con el NULL.

Saludos,

EDITO: Lo econtré: http://www.clubdelphi.com/foros/show...=NULL+Firebird
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 06-06-2007 a las 22:25:40.
Responder Con Cita
  #18  
Antiguo 06-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Sois mas rapidos que yo.
Ya lo hice, y funciona perfecto, con ligar tablas me referia a ver varias tablas en una consulta tipica de sql, si lo hace y perfecto.
Código SQL [-]
select * from articulos, articulomaterial where descripcion = 'ALCALA'
Una consulta de dos tablas, sencilla.
Esta consulta en especial trae 11855 registros y lo hizo muy rapido.
He notado, que las consultas son mas rapidas que en mysql, curioso.
Bueno aqui sigo experimentando un poco, algun dia manejo estas cosas, por supuesto con vuestra ayuda.
Saludos
Responder Con Cita
  #19  
Antiguo 06-06-2007
Avatar de xander
xander xander is offline
Miembro
 
Registrado: jul 2006
Posts: 499
Poder: 20
xander Va por buen camino
Cita:
Empezado por Caral
Esta consulta en especial trae 11855 registros y lo hizo muy rapido.
Si un producto natural te parece rápido, espera a que le entiendas mejor a como funcionan los "Planes de ejecución" y entonces si todo lo que hagas va a ser un tiro

Tambien vas a sacar mucho provecho de los procedimientos almacenados, son una chulada, yo tenía una consulta que por si sola por más que traté de optimizarla se tardaba por lo menos 5 segundos en resolverse (varias tablas y muchas relaciones entre ellas)... al final me dije: "Y porque mejor en vez de usar una consulta compleja mejor no hago un procedimiento almacenado que haga lo mismo pero por partes?"... y el procedimiento me devuelve los mismos resultados en 20 milisegundos
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..."
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
que hago mal? jvalles Gráficos 2 19-07-2005 14:45:06
Como las hago? jam888 Firebird e Interbase 7 06-05-2005 22:45:41
Como lo hago? danytorres SQL 4 08-06-2004 14:27:42
¿como lo hago? loenx Conexión con bases de datos 6 01-11-2003 15:26:34
Como lo hago¿ MANUEL OVAL SQL 6 31-10-2003 14:43:39


La franja horaria es GMT +2. Ahora son las 03:33:05.


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