1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

sql... :s

Discussão em 'Programação' iniciada por Py_, 6 de Março de 2008. (Respostas: 10; Visualizações: 645)

  1. Py_

    Py_ Power Member

    Boas, estou a criar uma consulta em sql para aceder a uma base de dados através do vb 2005 mas ela está constantemente a dar erro e não consigo perceber a razão.

    A consulta é :

    UPDATE TabDoente
    set [email protected]_civil, [email protected]_obervacao, [email protected], [email protected]_nascimento, [email protected], [email protected], [email protected], [email protected], [email protected]_instrucao, [email protected], [email protected]_reforma
    Where n_doente=" & txtndoente.Text

    O parametro passado no final pela caixa de texto é nnumérico por isso não precisa de nenhuma formatação especial.

    os outros parametros estão todos bem formatados.

    Código:
    
                dbCmd.Parameters.Add("@frkestado_civil", OleDbType.VarChar)
                dbCmd.Parameters("@frkestado_civil").Value = (cbestadocivil.SelectedItem).ToString
    
                dbCmd.Parameters.Add("@data_obervacao", OleDbType.Date)
                dbCmd.Parameters("@data_obervacao").Value = CDate(txtdataobservacao.Text)
    
                dbCmd.Parameters.Add("@entrevistador", OleDbType.VarChar)
                dbCmd.Parameters("@entrevistador").Value = (txtnentrevistador.Text).ToString
    
                dbCmd.Parameters.Add("@data_nascimento", OleDbType.Date)
                dbCmd.Parameters("@data_nascimento").Value = CDate(txtdatadenascimento.Text)
    
                dbCmd.Parameters.Add("@local", OleDbType.VarChar)
                dbCmd.Parameters("@local").Value = (caixalocal.SelectedItem).ToString
    
                dbCmd.Parameters.Add("@origem", OleDbType.VarChar)
                dbCmd.Parameters("@origem").Value = (caixaorigem.SelectedItem).ToString
    
                dbCmd.Parameters.Add("@sexo", OleDbType.VarChar)
                dbCmd.Parameters("@sexo").Value = (caixaSexo.SelectedItem).ToString
    
                dbCmd.Parameters.Add("@ocupacao", OleDbType.VarChar)
                dbCmd.Parameters("@ocupacao").Value = txtocupacao.Text
    
                dbCmd.Parameters.Add("@anos_instrucao", OleDbType.Numeric)
                dbCmd.Parameters("@anos_instrucao").Value = CInt(txtinstrucao.Text)
    
                dbCmd.Parameters.Add("@reforma", OleDbType.Integer)
                dbCmd.Parameters("@reforma").Value = reforma
    
                dbCmd.Parameters.Add("@idade_reforma", OleDbType.Integer)
                dbCmd.Parameters("@idade_reforma").Value = idade_reforma
    
    


    A executar o erro é o seguinte:

    "Erro de sintaxe na instrução UPDATE"


    sera que alguém me pode ajudar?

    cumprimentos,
    Py_
     
  2. Bluestrattos

    Bluestrattos Power Member

    é erro de escrita, ou existe mesmo um campo chamado "data_obervacao" em vez de "data_observacao" ?

    já tentaste executar a query directamente no motor, em vez de a executares através do vb ?
     
  3. Py_

    Py_ Power Member

    Foi erro na base de dados, o campo está mesmo com esse nome... xeguei a conclusão depois de fazer o post que o erro é do campo local mas já conferi com a base de dados, o nome está correcto, executo a query directamente e funcionar correctamente, executo a query no vb sem o campo local e funciona correctamente. Isolo a query com o campo "local" e não funciona... os parametros estão bem definidos, os nomes estão correctos, o caminho da base de dados também, os nomes de tabelas, campos está tudo correcto.... Já aconteceu alguma vez?? Estou mesmo a entrar em paranóia porque o prazo de entrega está a acabar e não percebo o que se passa.... :s...

    Agradeço muito a quem puder ajudar...

    Cumprimentos,
    Py_
     
  4. Feiticeiro

    Feiticeiro Power Member

    Não falta " no final da sintaxe?
     
  5. Py_

    Py_ Power Member

    ...Where n_doente=" & txtndoente.Text

    Não. No final não tem porque estou a concatenar a string com uma textbox...
     
  6. mOrSa

    mOrSa Power Member

    Na minha maneira de ver, esse é o pior erro que podes fazer! :P É uma maravilha para os amantes do SQL Injection! :P
    Comentários à parte, suponho que estejas a colocar a query do "update bla bla bla" em
    dbCmd.CommandText = "Update..." . O que eu sugiro é que faças um breakpoint na instrução de dbCmd.CommandText, fazeres um watch e copiares a query directamente para o Access.

    Outra coisa que podes fazer é dbCmd.Parameteres.AddWithValue("@parametro", Valor_Parametro) e assim escusas de especificar qual o tipo. Ele gere isso automaticamente.
    Outra coisa, verifica se as datas que estás a passar para a BD estão correctas. Tenho problemas quando me esqueço disso. No caso das datas serem nulas um DBNull.Value como valor do parâmetro.
    Espero ter ajudado. 1abraço
     
  7. Py_

    Py_ Power Member

    dbCmd.Parameteres.AddWithValue("@parametro", Valor_Parametro) era komo usava anteriormente, defini desta forma que era para especificar melhor para ver se era o vb que não estava a fazer confusão de tipos. as datas estão a paxar correctamente, como já dixe é mesmo no parametro valor mas ñ consigo encontrar o erro...

    abraço
     
  8. Boxxer

    Boxxer Power Member

    O nome "local" não será uma palavra reservada ou algo do estilo?
    Tipo... o problema não será mesmo o nome (a label, o string "local")?
     
  9. Py_

    Py_ Power Member

    Boa pergunta ñ tinha pensado nisso... Vou experimentar... obrigado...
     
  10. Py_

    Py_ Power Member

    Era mesmo uma palavra reservada... Obrigadíssimo pela ajuda...

    Cumprimentos,
    Py_
     
  11. Boxxer

    Boxxer Power Member

    Eu ando muito enferrujado no VB (trabalho com RPG e COBOL em AS400), mas se calhar esse tipo de abstracção até deu jeito para me "distanciar" do problema :P

    Como o único problema, pela tua descrição, era com esse campo em concreto e estava tudo bem definido, ocorreu-me que pudesse ser a própria palavra... foi um tiro no escuro, mas ainda bem que chegou ao alvo ;)
     

Partilhar esta Página