locked
String Sql e o limite de caracteries RRS feed

  • Pergunta

  • Estou passando uma string de consulta SQL com mais de 255 caracteries para um Recorset atraves do
    .OpenRecorset(string).

    Quando depuro o codigo a string é cortada até o limite de 255 caracteries, o resto fica tudo perdido!!!
    Quem é que não aceita mais de 255 char é a string, a instrução SQL ou o metodo OpenRecordSet?

    Como posso passar para um RecordSet uma consulta SQL de mais de 255 caracteries ?



    Valeu pela atenção galera!


    Abraão Alves - Um eterno estudante
    segunda-feira, 6 de julho de 2009 14:48

Respostas

  • Não existe este limite no OpenRecordset.

    Não consegui reproduzir. Poste o código que está utilizando. Esta mensagem de erro que você falou ("parâmetros insuficientes") ocorre quando o nome de um campo do string sql não confere com o nome que está na tabela.
    Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.br
    terça-feira, 7 de julho de 2009 03:06
    Moderador
  • Caro Abraão,

    já passei por esse problema inúmeras vezes! Como o colega Luiz Cláudio disse, esse limite do OpenRecordset não existe, o que existe é um limite na janela do depurador. O erro que está dando é na sintaxe do select e não no seu tamanho...

    Tente dividir, só para testar, o select em 2 ou 3 variáveis, pegue o conteúdo e junte tudo no construtor de consultas do access. Isso vai lhe ajudar a encontrar o erro. Se você confia que o select está correto, pode ser só um a falta de um espaço ou o esquecimento de uma vírgula, etc., coisa bem simples que às vezes passam desapercebidas.

    Espero ter ajudado!

    Sucesso...

    • Marcado como Resposta Abraão Alves quarta-feira, 8 de julho de 2009 12:44
    quarta-feira, 8 de julho de 2009 09:57

Todas as Respostas

  • Não tenho certeza absoluta, mas me parece que no nepurador há este limite, o que não significa que o programa esteja assumindo apenas perte da string.

    Ou seja:

    su string está sendo passada inteiramente para o recordset, mas quando você captura ela no depurador, ele só pega os 256 caracteres...
    segunda-feira, 6 de julho de 2009 17:24
  • Desculpa descordar de vc Valmir,
    mas quando passo a string para o metodo OpenRecordSet sempre dá erro!!:

    "Erro3061 : Parametros Insuficientes. ram esperados 1. !"

    E isso não acontece quando a minha string é menor !!



    De qualquer forma obrigado pela atenção.


    E de quebra, testa ai vc mesmo uma consulta 'select' com varias filtros na clausula 'where' e depois me diz o resultado, oK
    Abraão Alves - Um eterno estudante
    terça-feira, 7 de julho de 2009 01:22
  • Não existe este limite no OpenRecordset.

    Não consegui reproduzir. Poste o código que está utilizando. Esta mensagem de erro que você falou ("parâmetros insuficientes") ocorre quando o nome de um campo do string sql não confere com o nome que está na tabela.
    Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.br
    terça-feira, 7 de julho de 2009 03:06
    Moderador
  • Em lugar de chamar Set RS = Db.OpenRecordset("SELECT...."), monte a consulta em uma string e chame Set RS = Db.OpenRecordset(SuaString).

    SuaString = "SELECT Campo1, Campo2, ..., CampoN "
    SuaString = SuaString & "FROM SuaTabela "
    SuaString = SuaString & "WHERE SeuCampo = " & SuaVarNum

    Fica muito mais fácil de visualizar.

    Bem aventurados os pessimistas: eles fazem backups!!!
    terça-feira, 7 de julho de 2009 16:09
  • Caro Abraão,

    já passei por esse problema inúmeras vezes! Como o colega Luiz Cláudio disse, esse limite do OpenRecordset não existe, o que existe é um limite na janela do depurador. O erro que está dando é na sintaxe do select e não no seu tamanho...

    Tente dividir, só para testar, o select em 2 ou 3 variáveis, pegue o conteúdo e junte tudo no construtor de consultas do access. Isso vai lhe ajudar a encontrar o erro. Se você confia que o select está correto, pode ser só um a falta de um espaço ou o esquecimento de uma vírgula, etc., coisa bem simples que às vezes passam desapercebidas.

    Espero ter ajudado!

    Sucesso...

    • Marcado como Resposta Abraão Alves quarta-feira, 8 de julho de 2009 12:44
    quarta-feira, 8 de julho de 2009 09:57
  • Mil desculpas galera!!
    Havia uma unica letra de um campo escrita incorretamente!!!

    Isso mesmo Valmir e Luiz, era erro de BIOS !

    Utilizei a dica do Osmar e dei uma arrumadinha no codigo, ficou até mais bonito! E deu para perceber de cara o erro !

    Enfim, sei que SQL com VBA é trabalhoso, ainda mais quando o depurador não ajuda !
    Muito obrigado pela atenção galera!!


    Abraão Alves - Um eterno estudante
    quarta-feira, 8 de julho de 2009 12:37