Ver Mensaje Individual
  #9  
Antiguo 22-07-2012
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Reputación: 22
fjcg02 Va camino a la fama
Ahí lo tienes, José Luis.

En este caso hay que utilizar los componentes MDO. Creo que vienen con Delphi, aunqe que no estoy seguro.


Código Delphi [-]
procedure TFormPresupuestos.ToolButton3Click(Sender: TObject);
var  Frm : TForm; MM : TMemo;
begin
  MDOExtract1.ExtractObject(eoDatabase);
     Frm := TForm.Create(nil);
     try
       Frm.Width := 400;
       Frm.Height := 500;
       Frm.Top := Mouse.CursorPos.Y;
       Frm.Left := Mouse.CursorPos.X-400;
       Frm.BorderStyle := bsToolWindow;
       Frm.Caption := 'DAtos de la BBDD';
       MM := TMemo.Create(nil);
       try
         MM.Parent := Frm;
         MM.Align := alClient;
         MM.WantReturns:= False;
         MM.ScrollBars:= ssBoth;
         MM.Lines:= MDOExtract1.Items;
         Frm.ShowModal;
       finally
         MM.Free;
       end;
     finally
       Frm.Free;
     end;

end;

Y devuelve esto ( es un extracto de todo )

Código SQL [-]
SET SQL DIALECT 3;

/* CREATE DATABASE 'SERVIDOR:C:\J\delphi\Firebird 1.5 y 2.0\Datos\BASOAPRES.FDB' PAGE_SIZE 1024

 DEFAULT CHARACTER SET ISO8859_1 */

/*  External Function declarations */

DECLARE EXTERNAL FUNCTION RDB$GET_CONTEXT
VARCHAR(80) CHARACTER SET NONE, VARCHAR(80) CHARACTER SET NONE
RETURNS VARCHAR(255) CHARACTER SET NONE FREE_IT
ENTRY_POINT 'get_context' MODULE_NAME 'system_module';


DECLARE EXTERNAL FUNCTION RDB$SET_CONTEXT
VARCHAR(80) CHARACTER SET NONE, VARCHAR(80) CHARACTER SET NONE, VARCHAR(255) CHARACTER SET NONE
RETURNS INTEGER BY VALUE 
ENTRY_POINT 'set_context' MODULE_NAME 'system_module';


/* Domain definitions */
CREATE DOMAIN SINO AS CHAR(1) CHARACTER SET ISO8859_1
   DEFAULT 'N'
   CHECK ((VALUE IS NULL) OR (VALUE IN ('N','S'))) NOT NULL;

/* Table: B_LINEAPRESUPUESTO, Owner: SYSDBA */

CREATE TABLE "B_LINEAPRESUPUESTO" 
(
  "IDLINEAPRES"  INTEGER NOT NULL,
  "IDPRESUPUESTO"  INTEGER NOT NULL,
  "CABECERA"  "SINO",
  "IMPRIMIR"  "SINO",
  "LINEA"  INTEGER NOT NULL,
  "PARTIDA"  VARCHAR(15) CHARACTER SET ISO8859_1 NOT NULL,
  "TIPO"  CHAR(1) CHARACTER SET ISO8859_1 NOT NULL,
  "IDTARIFA"  INTEGER,
  "IDMUEBLE"  INTEGER,
  "DESCRIPCION"  VARCHAR(200) CHARACTER SET ISO8859_1,
  "CANTIDAD"  NUMERIC(5, 2) NOT NULL,
  "UNIDADES"  VARCHAR(5) CHARACTER SET ISO8859_1 NOT NULL,
  "PRECIO"  NUMERIC(15, 2) NOT NULL,
  "PVP"  NUMERIC(15, 2) NOT NULL,
  "DESCUENTO"  INTEGER NOT NULL,
  "COSTE"  NUMERIC(15, 2) NOT NULL,
  "RENTABILIDAD"  INTEGER,
CONSTRAINT "FK_B_LINEAPRESUPUESTO" PRIMARY KEY ("IDLINEAPRES")
);
...
/* Stored procedures */

CREATE PROCEDURE "PRES_DUPLICAR" 
(
  SERIE VARCHAR(3) CHARACTER SET ISO8859_1,
  NUMERO INTEGER,
  IDPRESUPUESTO_ORIGINAL INTEGER,
  TIPO VARCHAR(15) CHARACTER SET ISO8859_1
)
AS
BEGIN EXIT; END ^

CREATE PROCEDURE "PRES_NUMERO" 
(
  SERIE CHAR(3) CHARACTER SET ISO8859_1
)
RETURNS
(
  NUMERO INTEGER
)
AS
BEGIN EXIT; END ^

TRIGGERS...
ETC

Espero que te valga. Estoy casi seguro de que con dbexpress también se puede.Creo además ( esto lo vi en un post de ClubDelphi ) que con MDO se pueden extraer las sentencias insert de las tablas que indiques.

Un saludo y suerte.
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita