none
Query String com erro. RRS feed

  • Pergunta

  • Eu tenho uma query string abaixo a qual faço um select numa tabela com 2 tipos de campos (nvarchar e numeric)

    os campos numeric estão com replace. Mas esta dando o seguinte erro: Incorrect syntax near 'DE';

    string _strSQL02 = "SELECT * FROM EPS WHERE EPS  = '" + TextBoxEPS.Text + "' AND RQPS = '" + TextBoxRQPS.Text + "' AND NORMAR = '" + TextBoxNORMAR.Text + "' AND DIAMETRO = " + TextBoxNORMAR.Text.Replace(',', '.') + " AND FAIXA1 = " + TextBoxFAIXA1.Text.Replace(',', '.') + " AND FAIXA2 = " + TextBoxFAIXA2.Text.Replace(',', '.') + " AND CLASSEMARAIZ = '" + TextBoxCLASSEMARAIZ.Text + "' AND CLASSEMAENCH = '" + TextBoxCLASSEMAENCH.Text + "' AND DIAMMARAIZ = " + TextBoxDIAMMARAIZ.Text.Replace(',', '.') + " AND DIAMMAENCH = " + TextBoxDIAMMAENCH.Text.Replace(',', '.') + " AND PSOLDAGEM = '" + ComboBoxPSOLDAGEM.Text + "' AND CODMAT = '" + ComboBoxCODMAT.Text + "' AND PROCESSORAIZ = '" + ComboboxPROCESSORAIZ.Text + "' AND PROCESSOENCH = '" + ComboboxPROCESSOENCH.Text + "' AND PPROGRESSAO = '" + ComboboxPPROGRESSAO.Text + "' AND TIPOPROCESSO = '" + ComboboxTIPOPROCESSO.Text + "' AND TIPOJUNTA = '" + ComboboxTIPOJUNTA.Text + "' AND TRATTERMICO = '" + ComboboxTRATTERMICO.Text + "' AND PREPOSAQUECIMENTO = '" + ComboboxPREPOSAQUECIMENTO.Text + "'";

    quarta-feira, 24 de julho de 2013 18:21

Respostas

  • Paulo_Ti,

     o erro não deve estourar na sua variável strSQL02  e sim no ExecuteNonQuery(),

    fiz um exemplo rápido aqui, coleque o break point na linha da sua variável quando o ponteiro passar dela vc posiciona seu mouse em cima do seu command  faz isso aqui:

    ()

     

    Diego Almeida Barreto System Analyst / Software Developer


    quarta-feira, 24 de julho de 2013 20:25

Todas as Respostas

  • Paulo_Ti, blxx cara.

    Da forma que vc está montando a sua query, você pode se deparar com erros de paramentro, causado por uma String que contenha apóstrofo (') , pois a presença do  apóstrofo  vai quebrar a sua string,

    Ex:

            var parametro = "fgfgf'lçk'fdgdgfdg";
            var query = "Select * from where Nome ='" + parametro + "'";

    se vc pegar essa query e rodar no SQL verá que a string estará quebrada....paleativamente vc pode dar um replace na sua query para tirar os apóstrofo , mas aconselho a trabalhar com Parameters.AddWithValue do SqlCommand , até por segurança para evitar um SQL Injection

    Grande abraço :)


    Diego Almeida Barreto System Analyst / Software Developer


    quarta-feira, 24 de julho de 2013 18:56
  • Diego

    Não existe apóstrofo nenhum. Eu olhei cada campo. O replace que existe são para o campos numeric(18,2) que são valores tipo 2,3 ou 24,7 que troca a "," pelo "." para poder rodar a query a qual ja uso com esse numero em outroas casos no meu projeto.

    Então o erro não é esse.

    Se alguem puder me ajudar eu agradeço

    Muito Obrigado.

    quarta-feira, 24 de julho de 2013 19:09
  • Faz o seguinte,

    Coloca um break point nessa variável e execulta o programa...... na hora q passar na sua variável query clica na lupinha e pega a query que ele gerou e joga no SQL para ver qual parâmetro ta entrando errado !!!!!!! 


    Diego Almeida Barreto System Analyst / Software Developer


    quarta-feira, 24 de julho de 2013 19:17
  • Diego o erro que eu coloquei acima ja esta no breakpoint

    Pois sem o breakpoint a tela fica congelada e nao da erro.

    Então esse erro esta dando quando executo essa query no meu programa.

     Incorrect syntax near 'DE';

    quarta-feira, 24 de julho de 2013 19:50
  • Paulo_Ti,

     o erro não deve estourar na sua variável strSQL02  e sim no ExecuteNonQuery(),

    fiz um exemplo rápido aqui, coleque o break point na linha da sua variável quando o ponteiro passar dela vc posiciona seu mouse em cima do seu command  faz isso aqui:

    ()

     

    Diego Almeida Barreto System Analyst / Software Developer


    quarta-feira, 24 de julho de 2013 20:25
  • Olá Paulo,

    acredito que seja mais fácil a sugestão do Diego, colocar um breakpoint na variável do seu SQL, esperar preenchê-la e rodar o valor da variável (a query) no SQL Management Studio ou o programa que esteja utilizando pra trabalhar com banco de dados, porque o programa te dará o ponto exato do erro:

    " Incorrect syntax near 'DE';"

    Daí vai ficar  fácil identificar.

    Abs


    Alexandre Felipe Malavasi Cardoso

    quarta-feira, 24 de julho de 2013 22:04
  • Eu peguei a query e joguei no meu sql do jeito que foi explicado.

    Da erro porem não consegui entender o erro ja que não diz aonde esta i erro.

    Eu pelo menos não entendi.

    Segue a query

    SELECT * FROM EPS WHERE EPS = 'EPS00000000000000' AND RQPS = 'RQPS1' AND NORMAR
    = 'NORMA DE REFERENCIA' AND DIAMETRO = NORMA DE REFERENCIA AND FAIXA1 = 1.60 AND
    FAIXA2 = 14.20 AND CLASSEMARAIZ = 'E2345-0988' AND CLASSEMAENCH = 'JTG0765433'
    AND DIAMMARAIZ = 3.60 AND DIAMMAENCH = 4.50 AND PSOLDAGEM = '2F' AND CODMAT =
    'A036-01' AND PROCESSORAIZ = 'BRA' AND PROCESSOENCH = 'CAM' AND PPROGRESSAO =
    'DESCENDENTE' AND TIPOPROCESSO = 'MANUAL' AND TIPOJUNTA = 'ANGULAR' AND
    TRATTERMICO = 'NÃO' AND PREPOSAQUECIMENTO = 'NÃO'

    Agora o erro do SQL:

    " Incorrect syntax near 'DE';"

    quinta-feira, 25 de julho de 2013 11:24
  • Obrigado Diego agora com sua tecnica de colocar no sql a query eu consegui achar o erro.

    Muito obrigado.

    Ja marquei como resposta.

    quinta-feira, 25 de julho de 2013 11:36
  • Fala ai Paulo blxx,

    que bom q conseguiu, esse esquema ai adianta bastante.....

    grande abraço


    Diego Almeida Barreto System Analyst / Software Developer

    quinta-feira, 25 de julho de 2013 13:19
  • Iai Paulo blxx meu,

    tem um parâmetro  na sua string q falta o apóstrofo para a concatenação do seu TextBoxNORMAR

     

    DIAMETRO = " + TextBoxNORMAR.Text.Replace(',', '.') + "
    
    // Deixa assim
    
    DIAMETRO = '" + TextBoxNORMAR.Text.Replace(',', '.') + "'
    Abraço :)
     

    Diego Almeida Barreto System Analyst / Software Developer



    sexta-feira, 26 de julho de 2013 23:56