Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-08-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Script para crear tablas

Hola a todos.

He creado un IBScript para crear unas tablas que no existe en mi aplicacion y para agrgar unos campos nuevos en tablas existentes.

Código SQL [-]
 
CREATE TABLE "RE0012"
(
  "ID_USUARI" INTEGER NOT NULL,
  "USUARI" VARCHAR(15) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "PASWORD" VARCHAR(15) CHARACTER SET ISO8859_1 COLLATE ES_ES
);
CREATE TABLE "RE0006TOTAL"
(
  "ID_REBUT" INTEGER NOT NULL,
  "DATA" DATE,
  "TITOL" VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "C_POSTAL" INTEGER,
  "CODI_CLUB" INTEGER,
  "ARBITRES" INTEGER,
  "MATERIAL" NUMERIC(9, 2),
  "I1" VARCHAR(1),
  "I2" VARCHAR(1),
  "I3" VARCHAR(1),
  "I4" VARCHAR(1),
  "I5" VARCHAR(1),
  "TI1" NUMERIC(9, 2),
  "TI2" NUMERIC(9, 2),
  "TI3" NUMERIC(9, 2),
  "TI4" NUMERIC(9, 2),
  "TI5" NUMERIC(9, 2),
  "TOTAL_REBUT" NUMERIC(9, 2),
  "IMPORT" NUMERIC(9, 2),
  "TEXTE" VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "SUSPENSIO" VARCHAR(1),
  "KM_TOTALS" INTEGER,
  "ASPIRANT" VARCHAR(1),
  "HORA_CONS" TIME,
  "HORA_SORT" TIME,
  "NUM_CORREDORS" INTEGER,
  "ID_ARBITRE" INTEGER,
  "ID_METGE" INTEGER,
  "DIR_CURSA" VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "CATEGORIA" VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "ZONA" INTEGER,
  "KM_CURSA" NUMERIC(9, 2),
  "TRANSP" VARCHAR(1),
  "GRAVAT" VARCHAR(1),
  "ACUMULAT" VARCHAR(1),
  "PREU_FIX" VARCHAR(1),
  "ID_USUARI" INTEGER
);
ALTER TABLE RE0006 ADD PREU_FIX VARCHAR(1);
ALTER TABLE RE0006 ADD ID_USUARI INTEGER;
ALTER TABLE RE0006FP ADD SUSPENSIO VARCHAR(1);
ALTER TABLE RE0006FP ADD I10 VARCHAR(1);
ALTER TABLE RE0006FP ADD TI10 NUMERIC(9, 2);
ALTER TABLE RE0006FP ADD TI11 NUMERIC(9, 2);
UPDATE RE0006 SET PREU_FIX = 'N';

El script se ejecuta perfectamente pero cuando abro la aplicación, parece que no se ha refrescado la base de datos y me da un error de tabla no existe o campo no existe y no me ejecuta el Update.

Si salgo y vuelvo a entrar, las tablas estan ahí sin mayor problema.

En la accion básica de la Transaction tengo TACommit, he probado con TACommitRetaining y tampoco se actualiza.

Alguien me puede ayudar para hacer que se refresquen los datos en la base de datos?

Si ejecuto el script desde IBConsole, no da ningun error pero las tablas tampoco se actualizan al momento tengo que salir y entrar.

Saludos
Responder Con Cita
  #2  
Antiguo 02-08-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Seguramente lo que tienes que mirar es el programa, no la base de datos.
Por ejemplo, los campos persistentes de los datasets, las sentencias sql de los mismos, etc.
Responder Con Cita
  #3  
Antiguo 02-08-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Gracias Antonio.

Si despues del script hago un

Base.Close;
Base.Open;

funciona bien, pero bajo mi poca experiencia me parece un poco "chapuza", no se...

Saludos
Responder Con Cita
  #4  
Antiguo 02-08-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Cita:
Empezado por jafera Ver Mensaje
Gracias Antonio.

Si despues del script hago un

Base.Close;
Base.Open;

funciona bien, pero bajo mi poca experiencia me parece un poco "chapuza", no se...

Saludos
Yo no lo veo chapuza. Es normal que si tienes tablas abiertas, etc. ..., después de modificar la base de datos con un script lo mejor es cerrarlo todo y volver a abrirlo, ya que puedes haber modificado objetos abiertos (lo cual va a provocar errores).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 02-08-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por cierto, yo no soy partidario de poner los nombres de los campos entre comillas porque entonces estás obligado a ponerlo siempre tal y como lo has escrito entre comillas.
Sin embargo si lo pones sin comillas entonces podrás usarlo después como quieras. Me explico:
Código SQL [-]
CREATE TABLE "RE0012"
(
  "ID_USUARI" INTEGER NOT NULL,
  "USUARI" VARCHAR(15) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "PASWORD" VARCHAR(15) CHARACTER SET ISO8859_1 COLLATE ES_ES
);
Luego tienes que hacer:
Código SQL [-]
select "ID_USUARI" from "REC0012" where "USUARI"= :user and "PASWORD"= :clave

Sin embargo, si lo declaras así:
Código SQL [-]
CREATE TABLE RE0012
(
  ID_USUARI INTEGER NOT NULL,
  USUARI VARCHAR(15) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  PASWORD VARCHAR(15) CHARACTER SET ISO8859_1 COLLATE ES_ES
);
Entonces puedes luego poner como quieras, mayúsculas/minúsculas y sin comillas, ejemplo:
Código SQL [-]
select id_usuari from rec00012 where usuari= :user and pasword= :clave

En fin, es más propicio a equivocarse de tu manera y hay que teclear más, las comillas, no olvidando mayúsculas/minúsculas, mientras que la forma que lo hago yo puedes olvidarte de todo eso
Responder Con Cita
  #6  
Antiguo 02-08-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Thumbs up

Gracias a todos.

Si os parece que es correcto el close-open pues lo dejo asi.

Lo de las comillas es porque yo tenia entendido que debia hacerse así, si puedo declarar los campos sin comillas pues en un futuro lo haré de este modo. (Hoy me acuesto sabiendo una cosa nueva, jejeje)

Saludos
Responder Con Cita
  #7  
Antiguo 02-08-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Cool

Y otra duda con el IBScript, se puede crear una descripción de una tabla desde el script?

DESCRIBE TABLE BOM0002G
'Grup de Classificació';

Gracias de nuevo

Josep
Responder Con Cita
  #8  
Antiguo 02-08-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

Al final de tu script, pon un commit;, con esto ya deberías poder ver tu tabla desde una transacción nueva (no desde una que ya esté abierta).


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #9  
Antiguo 02-08-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Posiblemente el fallo venía por aquí al tener la base de datos abierta esta no se actualizaba hasta que la cerraba y la volvía a abrir, por esto efectuo el close-open.

Si pongo un commit, se quedaba igual al tener la transaccion abierta, ya lo probé.

SAludos
Responder Con Cita
  #10  
Antiguo 02-08-2011
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Respecto al concejo de no usar los nombres entre comillas ("") que te dio casimiro te recomiendo que lo tomes y que lo apliques hacia atrás, además de no usar nombres de campos o tablas con acentos, eñes, separadas o algo que así... te lo digo por experiencia, yo "herede" una base de datos con varias de estas características que te comente (especialmente nombres entre "" con eñes o nombres compuestos, ej "usuarios por sede") y si que tuve bastantes problemas con eso... entre otras cosas y la que al final me hizo buscar todos los campos así fue que no podía hacer bkup (entonces solo hacia mis bkups con copiar y pegar del archivo .fdb con todo lo malo que esto puede traer) por culpa de unas tablas que tenían acentuación en el nombre de sus campos.
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
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
como hacer para crear reporte con 9 tablas diferentes RedVenom Impresión 3 07-04-2011 16:28:33
Script para Tablas Maestro detalle. JXJ MySQL 1 10-05-2007 16:58:11
crear alias por codigo para tablas dbase y que quede grabado en idapi32.cfg Wonni Conexión con bases de datos 2 06-02-2007 15:29:39
Quiero crear mi propio Script! PiornoCKA&G Varios 4 02-01-2007 17:39:19
¿Cómo conecto las tablas de paradox para crear un instalador con Inno Setup?? nuri Varios 4 08-08-2005 18:56:36


La franja horaria es GMT +2. Ahora son las 15:40:20.


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