MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Corrigir SQL com instrução INSERT INTO

    avatar
    Convidado
    Convidado


    [Resolvido]Corrigir SQL com instrução INSERT INTO Empty Corrigir SQL com instrução INSERT INTO

    Mensagem  Convidado 26/9/2011, 15:36

    Amigos.. ja fiz muito isto.. porem como a expressão é grande não estou a enxergar o erro.. A cabeça ja está a me dar voltas..

    Preciso que se possivel consigam me ajudar a visualizar o erro:

    [Resolvido]Corrigir SQL com instrução INSERT INTO Erro_SQL

    Grato.



    StrSQLDetentos = "SELECT Detentos.ID, Detentos.Sobrenome, Detentos.Nome, Detentos.Sexo," _
    & "Detentos.Crime, Detentos.Nível, Detentos.Cela, Detentos.RegimeAtual," _
    & "Detentos.UnidadeRequisitante, Detentos.[Se Albergado, Regime]," _
    & "Detentos.[Prisão Civil], Detentos.[Grau de Instrução], Detentos.Origem," _
    & "Detentos.Reicidente, Detentos.Infração, Detentos.Regime, Detentos.[Situação Penal]," _
    & "Detentos.RDD, Detentos.[Se RDD, Local e Período], Detentos.Alvará, Detentos.[Mês Alvará]," _
    & "Detentos.Transferido, Detentos.[Albergado Comparece], Detentos.[Data da Inclusao na unidade]," _
    & "Detentos.EntradaNaUnidade, Detentos.[Data da Inclusao na unidade1], Detentos.EntradaNaUnidade1" _
    & " FROM Detentos IN '" & StrPath & "'" _
    & " WHERE UnidadeRequisitante='" & VarUnidade & "' and RegimeAtual='" & VarReg & "'"


    Set rs = db.OpenRecordset(StrSQLDetentos)

    Do While Not rs.EOF
    CurrentDb.Execute "INSERT INTO DetentosTMP(ID, Sobrenome, Nome, Sexo, Crime, Nível, Cela, RegimeAtual," _
    & " UnidadeRequisitante, [Se Albergado, Regime], [Prisão Civil], [Grau de Instrução], Origem," _
    & " Reicidente, Infração, Regime, [Situação Penal], RDD, [Se RDD, Local e Período], Alvará, [Mês Alvará]," _
    & " Transferido, [Albergado Comparece], [Data da Inclusao na unidade], EntradaNaUnidade," _
    & " [Data da Inclusao na unidade1],EntradaNaUnidade1 ) Values (" & rs!ID & ",'" & rs!Sobrenome & "'," _
    & "'" & rs!Nome & "','" & rs!Sexo & "','" & rs!Crime & "','" & rs!Nível & "','" & rs!Cela & "'," _
    & "'" & rs!RegimeAtual & "','" & rs!UnidadeRequisitante & "'," _
    & "'" & rs![Se Albergado, Regime] & "','" & rs![Prisão Civil] & "','" & rs![Grau de Instrução] & "'," _
    & "'" & rs!Origem & "','" & rs!Reicidente & "','" & rs!Infração & "','" & rs!Regime & "'," _
    & "'" & rs![Situação Penal] & "','" & rs!RDD & "','" & rs![Se RDD, Local e Período] & "'," _
    & "'" & rs!Alvará & "','" & rs![Mês Alvará] & "','" & rs!Transferido & "'," _
    & "'" & rs![Albergado Comparece] & "','" & rs![Data da Inclusao na unidade] & "'," _
    & " '" & rs!EntradaNaUnidade & "','" & rs![Data da Inclusao na unidade1] & "'," _
    & " '" & rs!EntradaNaUnidade1 & "')"


    rs.MoveNext
    Loop
    le_lo28
    le_lo28
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 233
    Registrado : 13/07/2011

    [Resolvido]Corrigir SQL com instrução INSERT INTO Empty Re: [Resolvido]Corrigir SQL com instrução INSERT INTO

    Mensagem  le_lo28 26/9/2011, 16:42

    Opa blz?

    Acredito que a melhor forma de vc descobrir onde está errado e colocar a instrução numa string como vc fez com o recordset.

    Tipo:

    Código:

    Dim sSQL as String

    sSQL = "INSERT INTO DetentosTMP(ID, Sobrenome, Nome, Sexo, Crime..."

    Currentdb.Execute sSQL


    Coloque um ponto de interrupção na string sSQL.

    Quando passar por este ponto, abra a janela imediata e digite:

    ? sSQL

    Aparecerá o resultado do Instrução.

    Ficará melhor para poder achar o erro.

    Vc tb pode copiar e colar na grade de uma consulta e executar.

    Retorne se deu certo.

    Falow,

    Marcelo


    avatar
    Convidado
    Convidado


    [Resolvido]Corrigir SQL com instrução INSERT INTO Empty Re: [Resolvido]Corrigir SQL com instrução INSERT INTO

    Mensagem  Convidado 26/9/2011, 17:28

    Simplifiquei mais.. mas esta dando erro de sintaxe na instrução INSERT INTO...


    StrSQLDetentos = "SELECT ID, Sexo, Crime, Nível, Cela, RegimeAtual," _
    & "UnidadeRequisitante, [Se Albergado, Regime],[Prisão Civil], [Grau de Instrução]," _
    & "Reicidente, Infração, Regime, [Situação Penal] FROM Detentos IN '" & StrPath & "'" _
    & " WHERE UnidadeRequisitante='" & VarUnidade & "' and RegimeAtual='" & VarReg & "'"


    Set rs = db.OpenRecordset(StrSQLDetentos)
    StrSQL = "INSERT INTO DetentosTMP(ID, Sexo, Crime, Nível, Cela, RegimeAtual, UnidadeRequisitante, Se AlbergadoRegime, Prisao Civil, GrauDeInstrucao, Reicidente, Infracao, Regime, Situacao Penal) Values(" & rs(0) & "," & rs(1) & "," & rs(2) & "," & rs(3) & ",'" & rs(4) & "," & rs(6) & "," & rs(7) & "," & rs(Cool & "," & rs(9) & "," & rs(10) & "," & rs(11) & "," & rs(12) & "," & rs(13) & ")"


    rs.MoveFirst
    Do While Not rs.EOF
    Debug.Print StrSQL
    CurrentDb.Execute StrSQL
    rs.MoveNext
    Loop



    No Debug.Print:

    INSERT INTO DetentosTMP(ID, Sexo, Crime, Nível, Cela, RegimeAtual, UnidadeRequisitante, Se AlbergadoRegime, Prisao Civil, GrauDeInstrucao, Reicidente, Infracao, Regime, Situacao Penal) Values(107,Masculino,Sedução e corrupção de menor,A,'1,mineiros,,,Não informado,SIM,Art. 214 - Caput,Fechado,Provisório)

    avatar
    Convidado
    Convidado


    [Resolvido]Corrigir SQL com instrução INSERT INTO Empty Re: [Resolvido]Corrigir SQL com instrução INSERT INTO

    Mensagem  Convidado 26/9/2011, 17:36

    Resolvi com as aspas assim:


    StrSQL = "INSERT INTO DetentosTMP(ID, Sexo, Crime, Nível, Cela, RegimeAtual, UnidadeRequisitante, SeAlbergadoRegime, PrisaoCivil, GrauInstrucao, Reicidente, Infracao, Regime, SituacaoPenal) Values(""" & rs(0) & """,""" & rs(1) & """,""" & rs(2) & """,""" & rs(3) & """,""" & rs(4) & """,""" & rs(5) & """,""" & rs(6) & """,""" & rs(7) & """,""" & rs(Cool & """,""" & rs(9) & """,""" & rs(10) & """,""" & rs(11) & """,""" & rs(12) & """,""" & rs(13) & """)"



    Grato pela ajuda amigão..
    avatar
    Convidado
    Convidado


    [Resolvido]Corrigir SQL com instrução INSERT INTO Empty Re: [Resolvido]Corrigir SQL com instrução INSERT INTO

    Mensagem  Convidado 26/9/2011, 17:56

    Bem... ao executar o código pude observar que o campo que esta me dando problema é o campo INFRÇAO

    Pois no texto há aspas:

    Art. 33, "Caput" Lei 11.343/06

    Creio que estas aspas no texto está caunsando este problema..

    Este campo na instrução insert into é adicionado pelo:
    '" & rs(11) & "'

    Como aplicar as aspas neste caso?

    Grato.
    avatar
    Convidado
    Convidado


    [Resolvido]Corrigir SQL com instrução INSERT INTO Empty Re: [Resolvido]Corrigir SQL com instrução INSERT INTO

    Mensagem  Convidado 26/9/2011, 18:07

    O erro é justamente o da imagem acima..
    le_lo28
    le_lo28
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 233
    Registrado : 13/07/2011

    [Resolvido]Corrigir SQL com instrução INSERT INTO Empty Re: [Resolvido]Corrigir SQL com instrução INSERT INTO

    Mensagem  le_lo28 26/9/2011, 18:36

    Opa!

    Exatamente o que eu suspeita, uso de apóstrofo e tb aspas duplas.

    Então para insert vc deve tratar e até prever isso em campos textos da seguinte forma:

    Código:

    '" & replace(rs(1),"'", "''") & "'


    Agora para aspas duplas, vc precisa gravar com as aspas?

    Marcelo
    avatar
    Convidado
    Convidado


    [Resolvido]Corrigir SQL com instrução INSERT INTO Empty Re: [Resolvido]Corrigir SQL com instrução INSERT INTO

    Mensagem  Convidado 26/9/2011, 18:45

    Boas Marcelo...

    Agora deu uso de null inválido.. pois nem todos os registros possuem aspas...
    avatar
    Convidado
    Convidado


    [Resolvido]Corrigir SQL com instrução INSERT INTO Empty Re: [Resolvido]Corrigir SQL com instrução INSERT INTO

    Mensagem  Convidado 26/9/2011, 19:12

    Marcelo Amigão.. Graças a sua observação sobre as aspas e o Replace cheguei a esta solução

    1 - O replace diretamente na SQL funcionaria se todos os registro contivessem aspas, como alguns não tem.. em campos nulos para este registro o replace interrompe o código..

    O que fiz:

    Criei uma String onde carrego o RS(11) com ela... e após isso Checo se o registro é nulo.. se não for utilizo o replace...
    Se for nulo pulo o replace..

    E na SQL ao invés do RS(11) aplico a Strig.



    StrRs_11 = rs(11)
    If Not IsNull(rs(11)) Then
    StrRs_11 = Replace(rs(11), "'", "''")
    End If
    CurrentDb.Execute "INSERT INTO DetentosTMP(ID, Sexo, Crime, Nível, Cela, RegimeAtual, UnidadeRequisitante," _
    & "SeAlbergadoRegime, PrisaoCivil, GrauInstrucao, Reicidente, Infracao, Regime, SituacaoPenal)" _
    & "Values(""" & rs(0) & """,""" & rs(1) & """,'" & rs(2) & "',""" & rs(3) & """,""" & rs(4) & """,""" & rs(5) & """,""" & rs(6) & """,""" & rs(7) & """,""" & rs(Cool & """,""" & rs(9) & """,""" & rs(10) & """,""" & StrRs_11 & """,""" & rs(12) & """,""" & rs(13) & """)"


    rs.MoveNext
    Loop


    Cumprimentos...
    le_lo28
    le_lo28
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 233
    Registrado : 13/07/2011

    [Resolvido]Corrigir SQL com instrução INSERT INTO Empty Re: [Resolvido]Corrigir SQL com instrução INSERT INTO

    Mensagem  le_lo28 26/9/2011, 19:41

    Ótimo!!!!
    É isso ai!

    Até a próxima,

    Marcelo

    Conteúdo patrocinado


    [Resolvido]Corrigir SQL com instrução INSERT INTO Empty Re: [Resolvido]Corrigir SQL com instrução INSERT INTO

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 7/5/2024, 17:35