xzazax 0 Denunciar post Postado Novembro 7, 2007 Boa Tarde Pessoal, Estou com uma duvida básica, porem que nao consegui resposta do que eu precisava atraves do Google. Deixo expor meu problema: 1)Fiz uma aplicação que conecta em um BD MS SQL. Essa parte tá OK. 2)Tenho diversos comandos SQL em diversos arquivos *.sql. SQL´s Testados e rodados perfeitamente sem erros atraves do Query Analyzer. 3)Estou utilizando ADO. -Minha duvida é: a)Como fazer para o delphi ler esse arquivo *.sql e executar? b)Eu vi algo sobre o "loadfromfile", mas ele deu pau com meu SQL. Vou colar uma parte do SQL abaixo para vcs ter uma ideia. Obrigado desde já. --||||||||||||||||||||||||||||||||||||||||||||||||||||| --||CONVERSÃO || --||DATA ULTIMA ATUALIZAÇÃO: 18/09/2007 || --||SCRIPT IMPORTAÇÃO DO CADASTRO DE CONTRIBUINTES || --||CONTRIBUINTE || --||||||||||||||||||||||||||||||||||||||||||||||||||||| USE BaseTeste GO --DELETA OS DADOS DA TABELA CONTRIBUINTE DELETE FROM CONTRIBUINTE --INSERINDO OS DADOS NA TABELA CONTRIBUINTE PRINT 'INSERINDO TABELA CONTRIBUINTE' INSERT INTO CONTRIBUINTE(cdContribuinte,dscomplemento,inNaturezaJuridica,naLogradouro,nmCidade,nmCont ibuinte,nmfantasia, nrcgccpf,nrimovel,nrinscricaoEstadual,sgEstado,cdCep,nmbairro) SELECT conversao.dbo.arr_con.concod, conversao.dbo.arr_con.concom, CASE WHEN conversao.dbo.arr_con.connat=1 THEN 'F' WHEN conversao.dbo.arr_con.connat=2 THEN 'J' END, conversao.dbo.arr_con.conend, conversao.dbo.arr_con.concid, conversao.dbo.arr_con.connom, conversao.dbo.arr_con.confan, CAST(dbo.so_numeros(conversao.dbo.arr_con.concpfcnpj) as float), CAST(dbo.so_numeros(conversao.dbo.arr_con.connum) as int), conversao.dbo.arr_con.coninsest, conversao.dbo.arr_con.conuf, CAST(dbo.so_numeros(conversao.dbo.arr_con.concep) as int), conversao.dbo.arr_con.conbai FROM conversao.dbo.arr_con GO --Como o bairro é relacionado em outra tabela, agora vou relacionar com a tabela CONTRIBUINTE PRINT 'PREENCHENDO O CAMPO BAIRRO DA TABELA CONTRIBUINTE' DECLARE @concod int DECLARE @conbai varchar(30) DECLARE curBAIRRO CURSOR FOR SELECT conversao.dbo.arr_con.concod,conversao.dbo.arr_con.conbai from conversao.dbo.arr_con OPEN curBAIRRO FETCH NEXT FROM curBAIRRO into @concod,@conbai WHILE @@FETCH_STATUS = 0 BEGIN UPDATE contribuinte set cdbairro=(SELECT cdbairro from XXXbairro where sys_conbai=@conbai) where cdContribuinte=@concod FETCH NEXT FROM curBAIRRO into @concod,@conbai END CLOSE curBAIRRO DEALLOCATE curBAIRRO PRINT 'FIM CADASTRO CONTRIBUINTE' Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 7, 2007 No caso você teria de fazer seu programa carregar o SQL a varrer o mesmo, carregando na query, e acada GO executar... Compartilhar este post Link para o post Compartilhar em outros sites
xzazax 0 Denunciar post Postado Novembro 7, 2007 IF checkbox1.Checked THEN BEGIN adosql.SQL.Clear; assignfile(arq,'funcoes.sql'); reset(arq); WHILE NOT EOF(arq) DO BEGIN readln(arq,aux); adosql.SQL.Add(aux); END; adosql.ExecSQL; closefile(arq); END; a)Mais ou menos isso Marcio? b)Eu só nao entendi a parte do GO para ser sincero.!?! c)Essas linhas comentadas tb nao tem problema? --comentario Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 7, 2007 No caso precisa somente verificar se a linha em questão é GO, se for você executa, senão continua a carregar o SQL... Compartilhar este post Link para o post Compartilhar em outros sites
xzazax 0 Denunciar post Postado Novembro 7, 2007 Marcio, não sei como te agradecer! Era o tal do GO mesmo que tava dando problema. if aux='GO' then adosql.execSQL; Perfeito. Obrigado mesmo! Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 7, 2007 beleza... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites