EXECUTAR COMANDO DE TEXTBOX

CASTELO 03/05/2012 12:38:30
#401263
Falae VBManiacos

Estou mexendo em um script para criar banco, tabelas e campos.

Bom, o que acontece é que o comando estou fazendo em uma textbox da seguinte mandeira,
o conteúdo da textbox é o abaixo... como executo ele ?

Dim Banco As Database
Set Banco = CreateDatabase(app.path & [Ô]    este.mdb[Ô], dbLangGeneral)
SQL = [Ô]CREATE TABLE tb_acervo [Ô]
SQL = SQL & [Ô](ano TEXT (50), autor MEMO (0), data_cadastro DATETIME (0), detalhes TEXT (50), edicao TEXT (50), editora TEXT (50), emprestado TEXT (50), exemplar TEXT (50), id_acervo LONG (0), numero TEXT (50), onde TEXT (50), origem TEXT (50), outros MEMO (0), reservado YESNO (2), situacao TEXT (50), tipo TEXT (50), titulo MEMO (0), titulo_original MEMO (0), tombo TEXT (50), volume TEXT (50))[Ô]
Banco.execute SQL
Banco.close

qual o comando, o resto eu me viro...

Att.,
Eliseu
KERPLUNK 03/05/2012 13:20:55
#401268
Você digita isso numa textbox e quer executar isso como script, é isso?
CASTELO 03/05/2012 14:41:43
#401280
Citação:

:
Você digita isso numa textbox e quer executar isso como script, é isso?

BINGO!

Isso mesmo, executar como um script para criar o banco, a tabela e os campos.

Att.,
Eliseu
KERPLUNK 03/05/2012 14:45:33
#401281
Posso concluir que esteja usando um [Ô]banco de dados[Ô] access, nesse caso a criação do mesmo não é possível com comandos SQL, somente pelo método [Ô]CreateDatabase[Ô]. O que você precisa fazer não é executar os comandos VB, e sim os scripts para criação das tabelas e tudo mais, com exceção do banco em si, todo o resto é feito por SQL, mas para contornar o problema, você pode fazer um [Ô]comando especial[Ô], tipo [Ô]CreateDatabase NomeDoBanco[Ô] e quando interpretar, esse comando acionaria o método [Ô]CreateDatabase[Ô].
MARCELO.TREZE 03/05/2012 16:09:31
#401287
Resposta escolhida
Porque não coloca somente a query no textbox?, isso já resolveria.
CASTELO 03/05/2012 16:16:58
#401288
Marcelo.

Estou analisando um script que exetuca scripts VB em tempo real, mas não consegue interpretar o código.

Bom, pensando na sua resposta, vou fazer um teste aqui:

Usarei assim:

Text1.text = [Ô]CREATE TABLE tb_acervo (ano TEXT (50), autor MEMO (0), data_cadastro DATETIME (0), [Ô] & _
[Ô] detalhes TEXT (50), edicao TEXT (50), editora TEXT (50), emprestado TEXT (50), exemplar TEXT (50), [Ô] & _
[Ô] id_acervo LONG (0), numero TEXT (50), onde TEXT (50), origem TEXT (50), outros MEMO (0), [Ô] & _
[Ô] reservado YESNO (2), situacao TEXT (50), tipo TEXT (50), titulo MEMO (0), titulo_original MEMO (0), [Ô] & _
[Ô] tombo TEXT (50), volume TEXT (50))[Ô]

nomebanco.tex = [Ô]teste.mdb[Ô]

Dim Banco As Database
Set Banco = CreateDatabase(app.path & [Ô]\[Ô]& nomebanco.text, dbLangGeneral)

Banco.execute text1.text
Banco.close

Sendo que o objetivo é junto com o código que monta essa String Sql clonar a estrutura de um banco ACCESS e criar uma cópia limpa.
Na minha necessidade faço isso para não ser necessário enviar o banco.mdb PRONTO. só envio a estrutura via código que o banco é montando na instação do sistema. o que reduz em muito o tamanho do pacote de instalação.

Att.,
Eliseu
MACYSZYN 03/05/2012 16:23:09
#401289
CASTELO, eu acho que seria mais viável criar uma arquivo com as instruções para a montagem do banco,
e o seu aplicativo, carregar essas instruções, e montar o banco.
MARCELO.TREZE 03/05/2012 16:25:45
#401290
O que você chama de reduzir em muito, 500 kb ... 1 Mb... não sei se vale o trabalho.
CASTELO 03/05/2012 16:39:47
#401293
Para quem quer testar:

Private Sub Command1_Click()
Dim Banco As Database
Set Banco = CreateDatabase(App.Path & [Ô]\[Ô] & nomebanco.Text, dbLangGeneral)
Banco.Execute Text1.Text
Banco.Close
End Sub
Private Sub Form_Load()
Text1.Text = [Ô]CREATE TABLE tb_acervo (ano TEXT (50), autor MEMO, data_cadastro DATETIME, [Ô] & _
[Ô] detalhes TEXT (50), edicao TEXT (50), editora TEXT (50), emprestado TEXT (50), exemplar TEXT (50), [Ô] & _
[Ô] id_acervo LONG, numero TEXT (50), onde TEXT (50), origem TEXT (50), outros MEMO, [Ô] & _
[Ô] reservado YESNO, situacao TEXT (50), tipo TEXT (50), titulo MEMO, titulo_original MEMO, [Ô] & _
[Ô] tombo TEXT (50), volume TEXT (50))[Ô]
nomebanco.Text = [Ô]teste.mdb[Ô]
End Sub
é só criar um form com 2 textbox, (text1 e nomebanco) e 1 botão de comando.
Seu banco estará criado.

Marcelo, sei que posso estar errando em querer tornar o instalador mais leve, mas penso ser algo prático.

No mais, o objetivo principal seria compartilhar essa possibilidade, como utilidade para os desenvolvedore (ou inutilidade...)

Vou arrumar certinho os códigos em um projeto separado e vou postar para a galera avaliar.

Att.,
Eliseu
MARCELO.TREZE 03/05/2012 17:03:06
#401294
Olha eu já fiz um aplicativo assim, ou seja ao iniciar o executável ele verificava se o mdb existia,e caso contrário criava o mesmo com todas as tabelas e campos, usei isso durante algum tempo, porém com a evolução dos processadores (acho dificil alguém ainda estar usando um 486) isso passou pra mim a ser desnecessário, pois um instalador de uns 500 megas roda em segundos em um Dual Core que não é lá estas grandes coisas, imagine em um i3, i5 ou i7, seria vapt vupt, então em minha opinião a ideia é legal, mas veja bem se for um banco robusto haja código pra criar o mesmo, sendo que apenas incluir o banco no instalador, você teria a menos 500 kb ou até 1 Mb, o que não afetaria em nada o instalador.

CASTELO 03/05/2012 17:12:05
#401295
Marcelo,

Tú chegou bem no que tava querendo dizer mas passou batido... a questão de já existir o banco.
Estou me familiarizando com o innosetup e naõ sei se ele tem como verificar a existência ou não do banco. Mas a necessidade seria fazer um instalador mais leve, para ser baixado da internet ou enviado por email, e que me garantisse que não haveria possibilidade de sobscrever o banco de dados se o mesmo já existisse.

No VB verifico a existência do banco ou não... mas no instalador não sei.
Tópico encerrado , respostas não são mais permitidas