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 01-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 26
Caral Va por buen camino
Tutorial (como empezar con Firebird) Novatos

Hola
Primero que nada agradecer a casimiro, mi maestro en Firebird y por este espacio a ClubDelphi.
Espero que este mini tutorial sirva de ejemplo, aunque sea sencillo, para alguien que este empezando con Firebird.

Como bien sabemos los novatos la informacion siempre esta por todos lados, pero no se trata para nosotros, lo que nos complica cosas que aveces son mas sencillas de lo que parecen.
Espero que este tutorial os ayude.

Empecemos:
Primero nos bajaremos el programa firebird y lo instalaremos, practicamente dando siguiente a todo, es muy sencillo.
Ahora necesitamos un manejador, en este caso usaremos IBExpert, tambien lo descargamos e instalamos.

En este tutorial trataremos de hacer un programa sencillo para poder usar Firebird conectandonos con delphi.

Saludos
Continua.....
__________________
Siempre Novato
Responder Con Cita
  #2  
Antiguo 01-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 26
Caral Va por buen camino
Hola
Seguimos:
Una vez que hemos instalado Firebird nos preguntamos:
Donde esta?,
Como lo activo o no?,
Como arranca?.
Bien, a la hora de instalar Firebird se puede dejar solo o colocar donde deseemos los archivos, ¿pero como sabemos si esta corriendo, donde lo vemos?.
Bien, en el panel de control nos aparecera un icono, si le damos doble click podremos acceder y lo podremos configurar para que arrenque con windows o manualmente, pararlo o correrlo.
Facil.
Saludos
Continuamos.......
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 01-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 26
Caral Va por buen camino
Hola
Empecemos con IBExpert:
Una vez que arranca veremos una serie de opciones en la parte alta.
Para crear una BD nueva seguimos estos pasos:
En el menu, Database, buscamos y presionamos en Register Database.
Nos saldra una pantalla en la que colocaremos los datos de la BD que vamos a crear, asi:



En Database File pondremos la ruta que tendra la nueva BD asi como el nombre que le vallamos a poner,
en este caso le pusimos MIDB.FDB, acordaros de ponerle FDB (firebird database).
En Database Alias colocamos el nombre que queramos, este sera el nombre que aparecera en la lista del IBExpert.
En User Name escribimos SYSDBA, siempre sera este.
En Password escribimos masterkey, la clave se podra cambiar posteriormente.
Por ahora Role, Charset y lo demas lo dejamos como esta y presionamos en el boton register.
Ya la tenemos registrada, pero no tenemos ninguna BD, tendremos que crearla, para eso seguimos:

En el mismo menu Database, buscamos: Create Database y lo presionamos.
Nos mostrara la pantalla de creacion de database, asi:



Escribimos practicamente los mismos datos incluyendo usuario, password, etc y presionemos OK.
Nota: Es posible que os salga la pantalla de registro otra vez, simplemente cerradla.
Si buscamos la carpeta donde la colocamos veremos que ya se creo.
Si le damos doble click (en el programa IBExpert) al alias que creamos, se conectara con todo lo necesario para funcionar nuestra BD.



Bien, en el proximo paso crearemos la Tabla que necesitamos para nuestro programa.
Saludos
Continua.......
__________________
Siempre Novato
Responder Con Cita
  #4  
Antiguo 01-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 26
Caral Va por buen camino
Hola
Seguimos con IBExpert:
Ahora crearemos nuestra tabla USUARIOS.
Dandole doble click a nuestro alias creado, nos muestra todas las opciones que necesitamos.
Buscamos Tables y con click derecho nos saldra la lista, el primer punto es New Table, le damos click:



Esto nos creara una pantalla en donde podremos colocar los campos de nuestra Tabla.



Bien, ahora ya podemos cambiarle el nombre y poner los datos de nuestros campos.
Recordad que para crear un nuevo campo se presiona en el boton que se muestra en la foto anterior.

Asi quedaria nuestra tabla ya terminada, copiadla igual:



Una vez terminado presionamos el boton para crearla y nos mostrara una pantalla para hacer un Commit.
Presionaremos el boton Commit y listo, ya tenemos nuestra tabla.

Ahora deberiamos crearle un indice ya que Firebird se enoja (y me consta) cuando no le pones indices a las tablas.
En el proximo paso lo haremos.
Saludos
Continua......
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 01-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 26
Caral Va por buen camino
Hola
Los indices de nuestra Tabla:

Al igual que en la pantalla anterior esta vez buscaremos la opcion Indices, le damos click derecho y buscaremos New Index:



Nos saldra una pantalla para crear los indices.



Aqui buscaremos nuestra tabla en el primer desplegable, en este caso solo tenemos USUARIOS.
Pasaremos el Campo CodUsuario al lado derecho de la lista y lo haremos unico.
Presionamos OK
Esto nos enviara a la pantalla del Commit, presionamos ese boton y nos creara el Indice.

Bien, ya tenemos el primer paso listo, creo que podemos empezar con delphi.
Saludos
Continua......
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 01-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 26
Caral Va por buen camino
Hola
Ahora nos toca pensar en como nos conectaremos con nuestra BD desde delphi.
Hay varios componentes que lo hacen, los que yo conozco, Zeos e Intebase (IB).
Bien:
Zeos es muy bueno, muy rapido, sencillo de instalar, gratis etc.
IB esta incluido en Delphi, es rapido, sencillo de usar, etc.
Cual usamos entonces?.
Segun mi poca experiencia:
Zeos aunque muy bueno, aveces grita y no nos dice por que, nos muestra errores y no nos dice ni donde ni como, ni cuando, osea, para nosotros los novatos es un dolor de cabeza.
IB tambien aveces grita, pero por lo menos de vez en cuando nos dice donde esta el error, segun mi punto de vista es mas comodo, por decirlo de alguna manera.
Por ende, nos conectaremos por medio de IB.
Saludos.
Continua.....
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 01-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 26
Caral Va por buen camino
Hola
Empecemos con Delphi.
Una vez arrancado nuestro delphi, tenemos el form1 de siempre.
Creemos un Datamodule que para mi es una buena opcion.
Entonces:
File, new, DataModule nos creara el Datamodule1.

Vamos a la paleta Interbase y le arrastraremos a nuestro dataModule:
Un IBDatabase
Un IBTransaction

Demosle Doble Click al IBDatabase:
Os saldra una pantalla en la que pondremos esencialmente los mismos datos que pusimos con el IBExpert:



Dejad sin marcar la opcion Login Prompt, asi no os pedira el password.
Si queris asegurar la conexion, dadle a Test, os dara un mensaje, si esta bien:

---------------------------
Successful Connection
---------------------------
OK
---------------------------


Ya estamos conectados, dadle OK.

Ahora necesitamos las transacciones, en esto Firebird es muy concreto si no las haces se enoja y mucho

Demosle Doble Click al IBTransaction.
Nos saldra una pantalla con varias opciones, pinchemos en Read_Commited:



Bueno, ya estamos conectados y tenemos nuestras transacciones, mas o menos aseguradas.
No os olvideis de ir guardando todo...
Saludos
Continua....
__________________
Siempre Novato
Responder Con Cita
  #8  
Antiguo 01-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 26
Caral Va por buen camino
Hola
Como ya tenemos casi todo listo y tenemos una tabla USUARIOS creada lo logico es hacer un Form para loguearnos, entonces crearemos un form mas.
Como siempre:
File New, Form.
Esto nos creara el form2 que es el que iniciara el programa:
Arrastremos al nuevo form:
2 Edit.
2 Label
2 Botones
1 IBQuery (de la paleta Interbase)

Cambiemos el Name del form por FLogin, quedaria asi:



Bien, ahora nos queda poner el codigo que necesitamos:
Empecemos por el IBQuery:

En la propiedad Database pondremos la direccion de la IBDatabase:
DataModule2.IBDatabase1

En la propiedad SQL (strings) presionaremos el boton y nos saldra una pantalla:
En este caso solo tendremos la Tabla Usuarios, escribiremos esto:

Código SQL [-]
SELECT CodUsuario, Nombre, Clave FROM Usuarios WHERE
CodUsuario = :cod

Quedara asi:



Presionamos OK.

Ahora en la propiedad Params del IBQuery, presionamos el boton y nos saldra una pequeña pantalla, ahi cambiaremos algunos datos, quedara asi:



Segimos con los botones.
Saludos
Continua....
__________________
Siempre Novato

Última edición por Caral fecha: 01-07-2010 a las 23:14:23.
Responder Con Cita
  #9  
Antiguo 02-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 26
Caral Va por buen camino
Hola
Segimos con el form FLogin:
Coloquemos una variable (cuenta), esta nos servira para determinar la cantidad de veces que se intenta introducir la clave:
Código Delphi [-]
var
  FLogin: TFLogin;
  Cuenta : integer;
 
implementation

En el evento OnCreate la iniciamos en cero:

Código Delphi [-]
procedure TFLogin.FormCreate(Sender: TObject);
begin
   Cuenta := 0;
 
end;

En el boton OK:

Código Delphi [-]
procedure TFLogin.BtnOkClick(Sender: TObject);
begin
   IBQuery1.Params.ParamByName('Cod').Value:= Edit1.Text;
   IBQuery1.Active:= True;
If IBQuery1.RecordCount < 1 then
    Begin
       Cuenta := Cuenta + 1;
       MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
       Edit1.Text := '';
       Edit2.Text := '';
       IBQuery1.Active := False;
       If Cuenta = 3 then Close;
    end
   else
       If IBQuery1Clave.AsString = Edit2.Text then
        Begin
          Form1.Show;
          IBQuery1.Active := False;
          FLogin.Visible:= False;
        end
     else
         Begin
           Cuenta := Cuenta + 1;
           MessageDlg('Clave Inválida',mtError, [mbOK], 0);
           Edit2.Text := '';
           IBQuery1.Active := False;
           If Cuenta = 3 then Close;
         end;
 
end;

En el boton Cancelar:

Código Delphi [-]
procedure TFLogin.Button2Click(Sender: TObject);
begin
  Close;
end;

Ahora solo nos queda que el programa arranque desde el form login:
Vamos al Proyecto, en units, project y cambiamos el orden de entrada al programa asi:

Código Delphi [-]
program Project1;
 
uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {DataModule2: TDataModule},
  UFLogin in 'UFLogin.pas' {FLogin};
 
{$R *.res}
 
begin
  Application.Initialize;
  Application.CreateForm(TDataModule2, DataModule2);
  Application.CreateForm(TFLogin, FLogin);
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


Listo, a correr.
AHHHHHHHH, que monton de errores, logico, somos novatos y se nos olvido asignar algunas cositas.
Son faciles de apreciar pero son errores que nos pueden pasar por descuido:

Primero regresemos un poco atras, al datamodule:

1- En el IBDatabase nos olvidamos de colocar en su propiedad DefaultTransaction el IBTransaction.
Con esto ya se ligan.
2- Lo mismo con el IBTransaction, en su propiedad DefaultDatabase lo ligamos pero esta vez con el IBDatabase.
Osea, uno con otro.

Regresemos al FLogin.
Demosle doble click al IBQuery, nos saldra una pequeña pantalla, raton derecho y add, nos colocara los campos dentra de esta pantalla.
Listo, no era para tanto, corredlo, esta listo para usarse.

Ojala os sirva de algo este.

Saludos

Para dudas y aclaraciones estan los maestros
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 02-07-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 26
Caral Va por buen camino
Hola
Mi amigo y maestro Casimiro me envia una informacion que me parece muy importante aportar:
Cita:
Te informo de un par de cositas sobre el tutorial:

Cuando creas un campo que va a ser la clave primaria no tienes que crear
un índice, lo que hay que hacer es indicarle que es la clave primaria
(primary key) y él sólo automáticamente creará el índice que necesite.
Te he adjuntado una imagen para que lo veas.


Cita:
En el componente de base de datos has puesto el usuario, la clave y el
sql_role, en este último caso le has puesto el valor 3. Creo que te has
confundido con el dialecto. El dialecto se indica cuando se está creando
la base de datos, hay un campo que indica si se quiere con dialecto 1 o
el dialecto 3. Esto de role tiene que ver con los privilegios de los
usuarios.
Muchas gracias por el aporte.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #11  
Antiguo 02-07-2010
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 20
olbeup Va camino a la fama
Alucinante documental de Firebid, es un placer pertenecer al clubdelphi.

Un saludo.
Responder Con Cita
  #12  
Antiguo 02-07-2010
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.412
Poder: 22
fjcg02 Va camino a la fama
Hola Caral,
es importante que cuando se crea una BBDD , se indique el CHARSET, para que luego el tema de acentos, la eñe , etc no nos den problemas a la hora de hacer búsquedas, ... siempre y cuando trabajemos en castellano.
Yo suelo poner el ISO8859_1 y en general no he tenido problemas.

Buena aportación, novato.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #13  
Antiguo 02-07-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Está bien lo que comenta fjcg02, sin embargo yo tengo la costumbre de no ponerlo en la declaración de la base de datos, sólo en los campos que me interesa hacer búsquedas y ordenaciones que se tenga en cuenta las palabras acentuadas, signos, etc.
Por ejemplo, para los campos de nombres (personas, empresas, artículos, etc.) los declaro así:

Código SQL [-]
create domain domNombre varchar(64) character set ISO8859_1 collate ES_ES_CI_AI default '';

p.d.: siempre uso dominios, nunca creo los campos indicando el tipo.

Última edición por Casimiro Notevi fecha: 02-07-2010 a las 19:52:18.
Responder Con Cita
  #14  
Antiguo 02-07-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino


gracias.
__________________

Responder Con Cita
  #15  
Antiguo 13-12-2010
DalberDurango DalberDurango is offline
Registrado
 
Registrado: ago 2006
Ubicación: Colombia
Posts: 2
Poder: 0
DalberDurango Va por buen camino
Consulta

En el boton OK:

Código Delphi [-]
procedure TFLogin.BtnOkClick(Sender: TObject);
begin
   IBQuery1.Params.ParamByName('Cod').Value:= Edit1.Text;
   IBQuery1.Active:= True;
If IBQuery1.RecordCount < 1 then
    Begin
       Cuenta := Cuenta + 1;
       MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
       Edit1.Text := '';
       Edit2.Text := '';
       IBQuery1.Active := False;
       If Cuenta = 3 then Close;
    end
   else
       If IBQuery1Clave.AsString = Edit2.Text then {Me arroja error en esta linea}
        Begin
          Form1.Show;
          IBQuery1.Active := False;
          FLogin.Visible:= False;
        end
     else
         Begin
           Cuenta := Cuenta + 1;
           MessageDlg('Clave Inválida',mtError, [mbOK], 0);
           Edit2.Text := '';
           IBQuery1.Active := False;
           If Cuenta = 3 then Close;
         end;
 
end;


Tengo un problema en la linea que esta indicada
If IBQuery1Clave.AsString = Edit2.Text then {Me arroja error en esta linea}

[DCC Error] ULogin.pas(51): E2003 Undeclared identifier: 'IBQuery1clave'

no se que hacer, agradezco la ayuda y perdonen la novatada.
Responder Con Cita
  #16  
Antiguo 13-12-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 26
Caral Va por buen camino
Hola
No dices el error que te envia, pero podria ser que no esta en la caja de texto el campo clave, como solucionarlo, facil.
Dale doble click a IBQuery1.
Te saldra una pequeña pantalla.
Dale click derecho y ADD.
Esto colocara los campos en esa pantalla.
De momento solo coloca los que te den error, en este caso Clave.
Corre el programa otra vez.
Saludos
PD: Hay otra forma de solucionarlo pero empecemos por ahi.
__________________
Siempre Novato
Responder Con Cita
  #17  
Antiguo 13-12-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola

Cita:
Empezado por DalberDurango Ver Mensaje
Tengo un problema en la linea que esta indicada
If IBQuery1Clave.AsString = Edit2.Text then {Me arroja error en esta linea}

[DCC Error] ULogin.pas(51): E2003 Undeclared identifier: 'IBQuery1clave'

no se que hacer, agradezco la ayuda y perdonen la novatada.
El mensaje de error es muy claro, no existe nada llamado IBQuery1Clave, por lo que esa línea no se puede compilar.

¿ Que es IBQuery1clave ?. Con toda seguridad un campo persistente. Así que como bien dice Caral, deberías crearlos.

Aunque personalmente prefiero sustituir esa línea por :If IBQuery1.FieldByName('Clave').AsString = Edit2.Text thenY es que prefiero acceder a los campos de esta forma, en lugar de hacerlo por el correspondiente campo persistente. Te ahorras bastantes problemas de este tipo.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #18  
Antiguo 13-12-2010
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 15
pacopenin Va por buen camino
Cita:
Empezado por guillotmarc Ver Mensaje
Hola



El mensaje de error es muy claro, no existe nada llamado IBQuery1Clave, por lo que esa línea no se puede compilar.

¿ Que es IBQuery1clave ?. Con toda seguridad un campo persistente. Así que como bien dice Caral, deberías crearlos.

Aunque personalmente prefiero sustituir esa línea por :If IBQuery1.FieldByName('Clave').AsString = Edit2.Text thenY es que prefiero acceder a los campos de esta forma, en lugar de hacerlo por el correspondiente campo persistente. Te ahorras bastantes problemas de este tipo.

Saludos.
Por otro lado, esa forma de trabajar, traslada los errores a ejecución (compilaría bien, pero si el nombre del campo tiene un error o no existe, se produciría un error al ejecutar dicha línea), lo que en determinadas circustancias hace que los procesos de prueba y puesta a punto sean más largos y complejos. Ambas formas de trabajar tienen sus pros y contras.
__________________
http://www.gestionportable.com
Responder Con Cita
  #19  
Antiguo 14-12-2010
DalberDurango DalberDurango is offline
Registrado
 
Registrado: ago 2006
Ubicación: Colombia
Posts: 2
Poder: 0
DalberDurango Va por buen camino
OK muchachos, lo que pasa es que he estado siguiendo los pasos en el post, pero la linea de código que dice:

If IBQuery1Clave.AsString = Edit2.Text then

es porque lo puse tal cual aparece en el post, realice todos los pasos, pero al darle doble clic al IBQuery1 de la forma para identificarse y tratar de adicionar los campos me sale este otro error

Unknown SQL Data type (0).

y los detalles que me salen son:

[407A5A3B]{ibxpress140.bpl} Ib.IBError + $97
[40778C4E]{ibxpress140.bpl} Ibsql.TIBXSQLDA.Initialize + $3BE
[4077AE95]{ibxpress140.bpl} Ibsql.TIBSQL.Prepare + $391
[4076BBC5]{ibxpress140.bpl} Ibcustomdataset.TIBCustomDataSet.InternalPrepare + $ED
[4076DE0E]{ibxpress140.bpl} Ibcustomdataset.TIBCustomDataSet.InternalInitFieldDefs + $42
[50690D9F]{dbrtl140.bpl} DB.TDataSet.OpenCursor (Line 11348, "DB.pas" + 2) + $4
[50690F8D]{dbrtl140.bpl} DB.TDataSet.InitFieldDefs (Line 11419, "DB.pas" + 5) + $7
[407BFFF0]{ibxpress140.bpl} Ibquery.TIBQuery.InitFieldDefs + $0
[5067F6B7]{dbrtl140.bpl} DB.TDefCollection.UpdateDefs (Line 3396, "DB.pas" + 6) + $3
[506802EC]{dbrtl140.bpl} DB.TFieldDefs.Update (Line 3774, "DB.pas" + 1) + $A
[22AE849B]{dcldb140.bpl} DSDesign.TFieldsEditor.DoAddFields (Line 823, "DSDesign.pas" + 5) + $C
[22AE8425]{dcldb140.bpl} DSDesign.TFieldsEditor.AddFields (Line 808, "DSDesign.pas" + 1) + $2
[22AE8646]{dcldb140.bpl} DSDesign.TFieldsEditor.AddItemClick (Line 855, "DSDesign.pas" + 0) + $2
[502801CB]{vcl140.bpl } Menus.TMenuItem.Click (Line 2520, "Menus.pas" + 19) + $8
[50281787]{vcl140.bpl } Menus.TMenu.DispatchCommand (Line 3383, "Menus.pas" + 5) + $2
[50282966]{vcl140.bpl } Menus.TPopupList.WndProc (Line 4489, "Menus.pas" + 4) + $E
[502828B5]{vcl140.bpl } Menus.TPopupList.MainWndProc (Line 4464, "Menus.pas" + 2) + $5
[50076360]{rtl140.bpl } Classes.StdWndProc (Line 13014, "Classes.pas" + 8) + $0
[502C98F5]{vcl140.bpl } Forms.TApplication.StopHintTimer (Line 10515, "Forms.pas" + 3) + $6
[502C8749]{vcl140.bpl } Forms.TApplication.ProcessMessage (Line 9784, "Forms.pas" + 30) + $1
[502C878E]{vcl140.bpl } Forms.TApplication.HandleMessage (Line 9814, "Forms.pas" + 1) + $4
[502C8AB9]{vcl140.bpl } Forms.TApplication.Run (Line 9951, "Forms.pas" + 26) + $3
[0042D94A]{bds.exe } bds.bds (Line 200, "" + 8) + $FFFB

No he entendido nada de lo que dice .

Ha se me olvidaba decirles que estoy utilizando el Delphi 2010, perdonen por la demora para responder he tenido que salir. Y muchas gracias por responder tan prontamente
Responder Con Cita
  #20  
Antiguo 14-12-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Cita:
Empezado por pacopenin Ver Mensaje
Por otro lado, esa forma de trabajar, traslada los errores a ejecución (compilaría bien, pero si el nombre del campo tiene un error o no existe, se produciría un error al ejecutar dicha línea), lo que en determinadas circustancias hace que los procesos de prueba y puesta a punto sean más largos y complejos. Ambas formas de trabajar tienen sus pros y contras.
En realidad el hecho de que el campo exista, como obliga el tener un campo persistente, tampoco es ninguna garantía de que en tiempo de ejecución no nos salte igualmente un error. Por ejemplo si el tipo del campo persistente no coincide con el tipo del campo en la base de datos (esto me pasa mucho, por ejemplo al pasar un campo de entero a decimal), o porqué tenemos campos persistentes que ya no existen en la base de datos, o que han cambiado de nombre, ...

Así que aunque utilices campos persistentes, los procesos de prueba y puesta a punto tienen que ser igualmente largos y complejos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 14-12-2010 a las 12:51:38.
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
Programa (Mini Tutorial) novatos Caral Varios 82 19-10-2016 20:20:12
Empezar con Delphi5 y Firebird marcial Firebird e Interbase 1 04-10-2008 12:16:29
Hagamos todos un sistema [tutorial no novatos] desde cero !!!!!!!!!!! david_uh Varios 42 29-07-2008 01:57:43
Como Crear una Base de Datos Access (Tutorial Novatos) Caral Tablas planas 3 06-12-2007 21:51:50
Consejos para empezar con firebird seoane Firebird e Interbase 21 22-03-2007 06:14:33


La franja horaria es GMT +2. Ahora son las 02:12:06.


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