ABRIR ARQUIVO .SQL, ATRIBUIR AO TEXT E EXECUTAR

 Tópico anterior Próximo tópico Novo tópico

ABRIR ARQUIVO .SQL, ATRIBUIR AO TEXT E EXECUTAR

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#485548 - 23/11/2018 13:13:47

TRTNCG
CAMPINA GRANDE
Cadast. em:Fevereiro/2004


Ol Amigos, Boa Tarde!

Bom gente me veio a necessidade de criar um mdulo de executar script, tipo, alterei minha base criei, tabela, ndices, procedimentos e etc, e preciso gerar um script para executar no meu cliente e atualizar a base dele, j consigo abrir o arquivo .sql e mostrar no texto, agora necessito executar como poderei fazer, tenho que ler linha a linha algum teria algum exemplo, isso agilizaria bastante a rotina de atualizao.




#485549 - 23/11/2018 13:29:17

JONESPARIS
ERECHIM
Cadast. em:Fevereiro/2006


Ol...

Abra a Sua conexo e abra ela usando a execuo:

Dim Comando as String
Comando = [][]
Comando = Text1.Text
Conexo.Execute Comando

Jones Paris

#485552 - 23/11/2018 14:24:31

TRTNCG
CAMPINA GRANDE
Cadast. em:Fevereiro/2004


Citação:
:
Ol...

Abra a Sua conexo e abra ela usando a execuo:

Dim Comando as String
Comando = [][]
Comando = Text1.Text
Conexo.Execute Comando


Ento como text multiline o que acontece pe ser colocar desse jeito ele no vai pegar linha por linha vai executar tudo da da erro, pois por exemplo se tenho duas linhas 1 - CREATE TABLE XXXXX  2-  CREATE GENERATOR LLLL

Ele vai levar em conta que somente uma linha dando erro

Na verdade teria ue ler linhas separadas, ou seja linha a linha



#485553 - 23/11/2018 14:40:53

FABRICIOWEB
BELO HORIZONTE
Cadast. em:Novembro/2011


eu fao pelo comando do dos mesmo se for mysql assim ele cria todas as tabelas


Dim iFF As Integer
Dim sLinha1 As String
iFF = FreeFile
Open []C:\BACKUP1.BAT[] For Output As iFF
Print #iFF, Chr(34) & []C:\\Program Files\\MySQL\\MySQL Server 5.6\\bin\\mysql.exe[] & Chr(34) & []  --host=localhost --user=root --password= bancodedados <  [] & Chr(34) & []local do seu arquivo mysql .sql[] & Chr(34)
Print #iFF, []del c:\BACKUP1.bat[]
Close iFF

Shell []c:\BACKUP1.bat[], 1
    



#485554 - 23/11/2018 16:31:10

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Scripts SQL, por padro possuem delimitadores de comando, geralmente o []ponto e vrgula[]

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#485633 - 28/11/2018 00:57:09

TRTNCG
CAMPINA GRANDE
Cadast. em:Fevereiro/2004


Essa a soluo.....

On Error GoTo Erro_SQL

    Dim TextoSQl As String
    Dim TextCount As Long, TextLineIndx As Long, TextLineLen As Long, i As Long
    Dim strBuffer As String
    Dim strBuffer2 As String
    
    TextCount = SendMessage(Text1.hWnd, EM_GETLINECOUNT, 0, 0)
    
    If TextCount > 1 Then
        
        If Conexao.State = 0 Then Conexao.Open
        
        Conexao.BeginTrans
        
        With Text1
            For i = 0 To TextCount - 1
                TextLineIndx = SendMessage(.hWnd, EM_LINEINDEX, i, 0)
                TextLineLen = SendMessage(.hWnd, EM_LINELENGTH, TextLineIndx, 0)
                strBuffer = Space(TextLineLen)
                Call SendMessageStr(.hWnd, EM_GETLINE, i, ByVal strBuffer)
                
                If Mid(Trim(strBuffer), 1, 2) <> []/*[] And Trim(strBuffer) <> []SET SQL DIALECT 3;[] And Mid(Trim(strBuffer), 1, 8) <> []SET TERM[] And Trim(strBuffer) <> []^[] Then
                        If InStr(strBuffer, [];[]) > 1 Then
                            Variavel = (Split(strBuffer, [];[]))
                            strBuffer = Variavel(0)
                            If Len(strBuffer2) > 0 Then
                                If UCase([]NEW.[]) = UCase(Mid(Trim(strBuffer), 1, 4)) Or Mid(Trim(strBuffer), 1, 7) = []SUSPEND[] Then
                                    TextoSQl = strBuffer2 & Space(1) & strBuffer & [];END[]
                                    Conexao.Execute TextoSQl
                                Else
                                    If Trim(Mid(strBuffer, 1, 3)) <> []END[] Then
                                        TextoSQl = strBuffer2 & Space(1) & strBuffer
                                        MsgBox TextoSQl
                                        Conexao.Execute TextoSQl
                                    End If
                                End If
                                strBuffer2 = [][]
                                Debug.Print TextoSQl
                            Else
                                TextoSQl = strBuffer
                                Debug.Print TextoSQl
                                Conexao.Execute TextoSQl
                            End If
                            
                        Else
                            If Mid(Trim(strBuffer), 1, 3) <> []END[] Then
                                If strBuffer2 <> [][] Then
                                    strBuffer2 = strBuffer2 & Space(1) & strBuffer
                                Else
                                    strBuffer2 = strBuffer2 & strBuffer
                                End If
                            End If
                        End If
                End If
            Next
        End With
        
        Conexao.CommitTrans
        
        If Conexao.State = 1 Then Conexao.Close

        MsgBox []Dados atualizados com sucesso![], vbInformation, []Informativo[]

    Else
        MsgBox []O arquivo informado est vazio. Informe outro arquivo![], vbInformation, []Informativo[]
    End If

Erro_SQL:
   If Err <> 0 Then
    If Banco.State = 1 Then Banco.Close
    Call Tratamento_Erro(Err.Number, Err.Description, Erl, Now, Me.Name, []Acao_Executar_Script[], IDUsuarioLogado, HostnameMaquina, IPMaquina)
   End If



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por TRTNCG em 28/11/2018 00:57:24