Executar Script usando IB/FB DbExpress
Olá!
Uso IB/FB + DBExpress
Fiz uma pesquisa e logo vi q não existe um comp. p/ executar Script usando DBExpress. :(
1-Como rodar Script usando DBEpress ?
A quem puder ajudar desde já meus agradecimentos. :lol:
ANT.CARLOS/SP
Uso IB/FB + DBExpress
Fiz uma pesquisa e logo vi q não existe um comp. p/ executar Script usando DBExpress. :(
1-Como rodar Script usando DBEpress ?
A quem puder ajudar desde já meus agradecimentos. :lol:
ANT.CARLOS/SP
Ant.carlos/sp
Curtidas 0
Respostas
Rinez
25/10/2006
Caro amigo Ant.Carlos
Porque não usa ISQL do firebird?
Eu uso assim para o banco já criado:
MString:=´ISQL ´+banco.Text+´ -I ´+script.Text+´ -Q -user SYSDBA -PASSWORD masterkey;´;
IF APPLICATION.MessageBox(pchar(mstring),PCHAR(´Executar??´),mb_yesno)=idno then exit;
TRY
WINEXEC(PCHAR(mstring),SW_RESTORE);
MESSAGEBOX(HANDLE,PCHAR(´SCRIPT EXECUTADO´),
PCHAR(´ATENÇÃO´),
$00000020);
EXCEPT
ON E:EXCEPTION DO BEGIN
SHOWMESSAGE(´ERRO.SCRIPT NÃO EXECUTADO´+E.Message);
EXIT;
END; END;
(o ISQL.exe voce encntra no Firebird\firebird_1_5\bin)
Faça o Script no Bloco de notas.
coloque o ISQL.exe no diretório windows32
Espero ter ajudado
Zenir CTBA.
Porque não usa ISQL do firebird?
Eu uso assim para o banco já criado:
MString:=´ISQL ´+banco.Text+´ -I ´+script.Text+´ -Q -user SYSDBA -PASSWORD masterkey;´;
IF APPLICATION.MessageBox(pchar(mstring),PCHAR(´Executar??´),mb_yesno)=idno then exit;
TRY
WINEXEC(PCHAR(mstring),SW_RESTORE);
MESSAGEBOX(HANDLE,PCHAR(´SCRIPT EXECUTADO´),
PCHAR(´ATENÇÃO´),
$00000020);
EXCEPT
ON E:EXCEPTION DO BEGIN
SHOWMESSAGE(´ERRO.SCRIPT NÃO EXECUTADO´+E.Message);
EXIT;
END; END;
(o ISQL.exe voce encntra no Firebird\firebird_1_5\bin)
Faça o Script no Bloco de notas.
coloque o ISQL.exe no diretório windows32
Espero ter ajudado
Zenir CTBA.
GOSTEI 0
Ant.carlos/sp
25/10/2006
Olá!
Caro amigo, obrigado pela atenção.
fiz o teste como vc me indicou, mas não consegui concluir o teste.
Pois fiz tudo certo, mas não funciona, não consegui nem criar um arquivo de teste.
Veja:
=====================================
Banco := ´Dados_Teste.fdb´;
Texto := ´CREATE TABLE A_TESTE(CODFINA INTEGER)´;
MString:=´isql.exe ´+Banco+´ -I ´+Texto+´ -Q -user SYSDBA -PASSWORD masterkey;´;
TRY
WINEXEC(PCHAR(mstring),SW_MINIMIZE);
MESSAGEBOX(HANDLE,PCHAR(´SCRIPT EXECUTADO´),PCHAR
(´ATENÇÃO´),$00000020);
EXCEPT
ON E:EXCEPTION DO BEGIN
SHOWMESSAGE(´ERRO.SCRIPT NÃO EXECUTADO´+E.Message);
EXIT;
END;
=====================================
Caro amigo, obrigado pela atenção.
fiz o teste como vc me indicou, mas não consegui concluir o teste.
Pois fiz tudo certo, mas não funciona, não consegui nem criar um arquivo de teste.
Veja:
=====================================
Banco := ´Dados_Teste.fdb´;
Texto := ´CREATE TABLE A_TESTE(CODFINA INTEGER)´;
MString:=´isql.exe ´+Banco+´ -I ´+Texto+´ -Q -user SYSDBA -PASSWORD masterkey;´;
TRY
WINEXEC(PCHAR(mstring),SW_MINIMIZE);
MESSAGEBOX(HANDLE,PCHAR(´SCRIPT EXECUTADO´),PCHAR
(´ATENÇÃO´),$00000020);
EXCEPT
ON E:EXCEPTION DO BEGIN
SHOWMESSAGE(´ERRO.SCRIPT NÃO EXECUTADO´+E.Message);
EXIT;
END;
=====================================
GOSTEI 0
Rinez
25/10/2006
Prezado Ant Carlos Faça assim:
Para Criar o Banco
no Bloco de Notas CRIE UM ARQUIVO TEXTO E GRAVE COM O NOME
CRIAR.TXT
/*********************************************************/
/**** METADADOS TESTE.FDB 26/10/2006 ****/
/**** CRIA: BANCO, TABELA CAIXA ****************/
SET SQL DIALECT 3;
CREATE DATABASE ´C:\TESTE.FDB´
USER ´SYSDBA´
PASSWORD ´masterkey´
PAGE_SIZE 4096
DEFAULT CHARACTER SET ISO8859_1;
CREATE TABLE CAIXA (
ID_CAIXA INTEGER NOT NULL,
CAIDAT DATE,
CAIHIST VARCHAR(60),
CAIVALOR NUMERIC(15,2),
CAITIPO CHAR(1)
);
/****************Cria Chave Primaria *********************/
ALTER TABLE CAIXA ADD CONSTRAINT PK_CAIXA PRIMARY KEY (ID_CAIXA);
/*******************************/
Depois o comando:
É MELHOR VOCE COLOCAR O COMPONENTE OPENDIALOG1 DA PALETA DIALOGS PARA LER O TXT ONDE VOCÊ COLOCOU.
[b:a5c693193a]MYDIR:=´ISQL -I ´+OPENDIALOG1.FileName+´ -Q;´;[/b:a5c693193a]
WINEXEC(PCHAR(MYDIR),SW_RESTORE);
NÃO ESQUEÇA DOS ESPAÇOS DEPOIS DO I E ANTES DO -Q;.
Qualquer coisa estamos aí.
Abraços Prof. Zenir Ctba
Para Criar o Banco
no Bloco de Notas CRIE UM ARQUIVO TEXTO E GRAVE COM O NOME
CRIAR.TXT
/*********************************************************/
/**** METADADOS TESTE.FDB 26/10/2006 ****/
/**** CRIA: BANCO, TABELA CAIXA ****************/
SET SQL DIALECT 3;
CREATE DATABASE ´C:\TESTE.FDB´
USER ´SYSDBA´
PASSWORD ´masterkey´
PAGE_SIZE 4096
DEFAULT CHARACTER SET ISO8859_1;
CREATE TABLE CAIXA (
ID_CAIXA INTEGER NOT NULL,
CAIDAT DATE,
CAIHIST VARCHAR(60),
CAIVALOR NUMERIC(15,2),
CAITIPO CHAR(1)
);
/****************Cria Chave Primaria *********************/
ALTER TABLE CAIXA ADD CONSTRAINT PK_CAIXA PRIMARY KEY (ID_CAIXA);
/*******************************/
Depois o comando:
É MELHOR VOCE COLOCAR O COMPONENTE OPENDIALOG1 DA PALETA DIALOGS PARA LER O TXT ONDE VOCÊ COLOCOU.
[b:a5c693193a]MYDIR:=´ISQL -I ´+OPENDIALOG1.FileName+´ -Q;´;[/b:a5c693193a]
WINEXEC(PCHAR(MYDIR),SW_RESTORE);
NÃO ESQUEÇA DOS ESPAÇOS DEPOIS DO I E ANTES DO -Q;.
Qualquer coisa estamos aí.
Abraços Prof. Zenir Ctba
GOSTEI 0
Ant.carlos/sp
25/10/2006
:D Caros amigos, obrigado pela ajuda. :D
Consegui fazer funcionar e aqui está uma versao do que fiz. :idea:
Puxa! vcs não sabe o qto me ajudaram, pois há tempos estava procurando isto.
Path := ´C:\ACEINFO\APLICATIVO\´;
Banco:= Path+´DADOS.FDB´;
Isql := ´C:\Arquivos de programas\Firebird\Firebird_1_5\bin\isql.exe ´;
//...Deleta a procedure
Try
Close;
SQL.Clear;
SQL.Add(´DROP PROCEDURE CAIXA_PDV´);
ExecSQL;
Close;
Except
End;
//....Cria Procedure
Texto := ´C:\ACEINFO\APLICATIVO\PROC_CAIXA_PDV.sql´;
MYDIR:=Isql+Banco+´ -I ´+Texto+´ -Q -user SYSDBA -PASSWORD
masterkey;´;
WINEXEC(PCHAR(MYDIR),SW_RESTORE);
Sem +
Muito Obrigado.
ANT.CARLOS/SP
Consegui fazer funcionar e aqui está uma versao do que fiz. :idea:
Puxa! vcs não sabe o qto me ajudaram, pois há tempos estava procurando isto.
Path := ´C:\ACEINFO\APLICATIVO\´;
Banco:= Path+´DADOS.FDB´;
Isql := ´C:\Arquivos de programas\Firebird\Firebird_1_5\bin\isql.exe ´;
//...Deleta a procedure
Try
Close;
SQL.Clear;
SQL.Add(´DROP PROCEDURE CAIXA_PDV´);
ExecSQL;
Close;
Except
End;
//....Cria Procedure
Texto := ´C:\ACEINFO\APLICATIVO\PROC_CAIXA_PDV.sql´;
MYDIR:=Isql+Banco+´ -I ´+Texto+´ -Q -user SYSDBA -PASSWORD
masterkey;´;
WINEXEC(PCHAR(MYDIR),SW_RESTORE);
Sem +
Muito Obrigado.
ANT.CARLOS/SP
GOSTEI 0