Ir para conteúdo
Fórum Script Brasil
  • 0

Erro 3144 Update


Nathi

Pergunta

Eu estou fazendo um projeto em vb6 so que não consigo alterar o status de uma ordem de serviço de pendente para entregue, bem a sql está assim:

Status = MOS_cbosit.Text
   If tbOrdem.EOF Then
      Exit Sub
   Else
      strsql = "update Ordem_Servico set OS_Empresa = '" & OS_cboempresa & "'"
      strsql = strsql & ", OS_funcionario = " & OS_txtcodigofun
      strsql = strsql & ", OS_emissao = '" & OS_txtemissao & "'"
      strsql = strsql & ", OS_entrega = #" & OS_txtentrega & "#"
      strsql = strsql & ", OS_clicodigo = '" & OS_txtclicodigo & "'"
      strsql = strsql & ", OS_pagamento = '" & OS_cbopagamento & "'"
      strsql = strsql & ", OS_Pedcodigo = " & Pedido
      strsql = strsql & ", OS_entrada = '" & OS_txtentrada & "'"
      strsql = strsql & ", OS_Obs = '" & OS_txtobs & "'"
      strsql = strsql & ", OS_Status = " & Status
      strsql = strsql & " where OS_Codigo = " & MOS_txtcodigo
      banco.Execute strsql
      FRM_OS.OS_lblstatus.ForeColor = &H800000
      OS_lblstatus.Caption = "Entregue"
   End If

Na execução ele da erro 3144: erro de sintaxe da update.

Eu não encontrei nenhum erro, alguém pode me ajudar, por favor?!!

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Cara muito provavelmente o nome de alguma variável está errada (provavelmente numérica, já que o campo não possui aspas)

Por exemplo, pode estar ocorrendo isto:

variavel = ""
strsql = "update dados set valor=" & variavel 'Iria retornar: "Update dados set valor = ", o que é um erro
Pra encontrar o erro, faz isso:
Status = MOS_cbosit.Text

strsql = "update Ordem_Servico set OS_Empresa = '" & OS_cboempresa & "'"
strsql = strsql & ", OS_funcionario = " & OS_txtcodigofun
strsql = strsql & ", OS_emissao = '" & OS_txtemissao & "'"
strsql = strsql & ", OS_entrega = #" & OS_txtentrega & "#"
strsql = strsql & ", OS_clicodigo = '" & OS_txtclicodigo & "'"
strsql = strsql & ", OS_pagamento = '" & OS_cbopagamento & "'"
strsql = strsql & ", OS_Pedcodigo = " & Pedido
strsql = strsql & ", OS_entrada = '" & OS_txtentrada & "'"
strsql = strsql & ", OS_Obs = '" & OS_txtobs & "'"
strsql = strsql & ", OS_Status = " & Status
strsql = strsql & " where OS_Codigo = " & MOS_txtcodigo

msgbox strsql

Depois vê se encontra algum erro na instrução "sql".Se não encontrar nada, posta aqui porque pode ajudar

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Nathali --
Cara muito provavelmente o nome de alguma variável está errada (provavelmente numérica, já que o campo não possui aspas)

Por exemplo, pode estar ocorrendo isto:

variavel = ""
strsql = "update dados set valor=" & variavel 'Iria retornar: "Update dados set valor = ", o que é um erro
Pra encontrar o erro, faz isso:
Status = MOS_cbosit.Text

strsql = "update Ordem_Servico set OS_Empresa = '" & OS_cboempresa & "'"
strsql = strsql & ", OS_funcionario = " & OS_txtcodigofun
strsql = strsql & ", OS_emissao = '" & OS_txtemissao & "'"
strsql = strsql & ", OS_entrega = #" & OS_txtentrega & "#"
strsql = strsql & ", OS_clicodigo = '" & OS_txtclicodigo & "'"
strsql = strsql & ", OS_pagamento = '" & OS_cbopagamento & "'"
strsql = strsql & ", OS_Pedcodigo = " & Pedido
strsql = strsql & ", OS_entrada = '" & OS_txtentrada & "'"
strsql = strsql & ", OS_Obs = '" & OS_txtobs & "'"
strsql = strsql & ", OS_Status = " & Status
strsql = strsql & " where OS_Codigo = " & MOS_txtcodigo

msgbox strsql

Depois vê se encontra algum erro na instrução "sql".Se não encontrar nada, posta aqui porque pode ajudar

Eu fiz isso, mas não consegui achar o erro ainda, a sql traz todas as informações do banco de dados, mas na hora de executar dá esse erro de sintaxe de update, mas ela reconhece todos os campos... Eu não sei o que pode ser, você tem mais alguma dica ou palpite??

Link para o comentário
Compartilhar em outros sites

  • 0

nathalia, muito provavelmente o erro é alguma coisa a ver com tipo de campo. exemplo, olha essa linha:

strsql = strsql & ", OS_Pedcodigo = " & Pedido
os pedido esta sem aspa. isso so pode acontecer se ele for numerico. imagino q ele seja numerico sim, mas olhe q se a variavel Pedido estiver vazia, vai dar erro, porque o sql ficara assim:
...OS_pagamento = 'XXXX',
OS_Pedcodigo = ,    --esse igual sem nd aqui daria erro.
OS_entrada = 'XXX',...[/code]

otra possibilidade é você estar gravando campo numerico com aspa.

pra descobrir o problema, faca um teste. tipo va tirando uma linha por vez e execute. exemplo, tira a linha onde atualiza o OS_Status e tenta executar pra ver se dar certo. se der, você vai saber q o problema ta no OS_Status. se não der certo, ai tire a linha do OS_Obs e assim por diante, ate você descobri.

mas tem q toma cuidado porque pode ter mais de uma linha com erro. então caso você descubra a linha do erro e consiga corrigir, é bom ir colocando de volta uma de cada vez pra ver se não tem otra dando erro.

Editado por kuroi
Link para o comentário
Compartilhar em outros sites

  • 0
nathalia, muito provavelmente o erro é alguma coisa a ver com tipo de campo. exemplo, olha essa linha:

strsql = strsql & ", OS_Pedcodigo = " & Pedido
os pedido esta sem aspa. isso so pode acontecer se ele for numerico. imagino q ele seja numerico sim, mas olhe q se a variavel Pedido estiver vazia, vai dar erro, porque o sql ficara assim:
...OS_pagamento = 'XXXX',
OS_Pedcodigo = ,    --esse igual sem nd aqui daria erro.
OS_entrada = 'XXX',...

otra possibilidade é você estar gravando campo numerico com aspa.

pra descobrir o problema, faca um teste. tipo va tirando uma linha por vez e execute. exemplo, tira a linha onde atualiza o OS_Status e tenta executar pra ver se dar certo. se der, você vai saber q o problema ta no OS_Status. se não der certo, ai tire a linha do OS_Obs e assim por diante, ate você descobri.

mas tem q toma cuidado porque pode ter mais de uma linha com erro. então caso você descubra a linha do erro e consiga corrigir, é bom ir colocando de volta uma de cada vez pra ver se não tem otra dando erro.

Valeu! Eu consegui arrumar o erro, era o pedido que estava vazio mesmo...
Link para o comentário
Compartilhar em outros sites

  • 0

Ei, tenta evitar enviar mensagens por M.P. (além de ser mais difícil de conseguir a solução para seu problema, pode haver outras pessoas com o mesmo problema !

Olá Jonathan! Você postou uma resposta pra mim no forum sobre o erro de sintaxe de update, e eu agradeço, já consertei o que estava errado... Só que surgiu outros problemas e eu queria sua ajuda. O negócio é o seguinte:

No formulário de Ordem de Serviço existe uma public Function com uma rotina de contar 3 dias a frente da data de emissao. (Deu pra entender? EX: se a emissao=10/10/2008 a entrega vai ser =13/10/2008). E caso esse dia caia num sábado ou domingo, ela pula a data de entrega para 2ªfeira. Isso tava funcionando com o campo dataentrega tipo texto no banco de dados, só que eu precisei mudar esse campo para data/hora por causa de outros problemas e agora essa rotina não funciona direito (Olha só que confusão!), e agora?? O que eu faço? você tem alguma ideia? Eu to recorrendo a um monte de gente porque eu preciso entregar esse sistema logo, o meu prazo já acabou, eu pedi mais um tempo, mas o cliente ta com pressa. Se você puder me ajudar, eu ficarei muito grata, e com certeza vai ser muito util!!

Obrigada

Se você mudou o campo do tipo texto para data/hora, é simples concertar o seu problema:

Ao invés de:

strsql = "Update dados set entrega='" & data_entrega & "'"
Utilize:
strsql = "Update dados set entregar = #" & data_entrega & "#"

Se funcionar, posta aí !

Link para o comentário
Compartilhar em outros sites

  • 0

ou nathalia, para de mandar mp, poste sempre aqui. porque perguntar só pra mim ou só pro jonathan se você pode perguntar pra td mundo de uma vez aqui??

alem de q pra mim não faria diferenca, porque sempre leio todos os topicos aqui.

Se você mudou o campo do tipo texto para data/hora, é simples concertar o seu problema:

Ao invés de:

strsql = "Update dados set entrega='" & data_entrega & "'"
Utilize:
strsql = "Update dados set entregar = #" & data_entrega & "#"
jonathan, pelo q sei o # # é só pra fazer where. pelo menos, mesmo no access eu sempre gravo data com ' '. não testei aqui, mas talvez funcione sim com o # # mas é certeza q tb funciona com o ' ', sempre fiz assim. mas de qualquer forma, o melhor jeito de se gravar data em todos os bancos é no formato YYYY-MM-DD (com - mesmo no lugar de /). exemplo:
strsql = "Update dados set entrega='" & Format(data_entrega, "YYYY-MM-DD") & "'"

Isso tava funcionando com o campo dataentrega tipo texto no banco de dados, só que eu precisei mudar esse campo para data/hora por causa de outros problemas e agora essa rotina não funciona direito (Olha só que confusão!), e agora?? O que eu faço? você tem alguma ideia?

nathalia, "não funciona direito" pode signficia mil coisas, a gente não tem como saber se você não explicar direito. de preferencia poste o codigo dessa rotina e explica qual o problema. o q acontece, da mensagem de erro?? não volta o valor esperado?? então volta o q??

Link para o comentário
Compartilhar em outros sites

  • 0
ou nathalia, para de mandar mp, poste sempre aqui. porque perguntar só pra mim ou só pro jonathan se você pode perguntar pra td mundo de uma vez aqui??

alem de q pra mim não faria diferenca, porque sempre leio todos os topicos aqui.

Se você mudou o campo do tipo texto para data/hora, é simples concertar o seu problema:

Ao invés de:

strsql = "Update dados set entrega='" & data_entrega & "'"
Utilize:
strsql = "Update dados set entregar = #" & data_entrega & "#"
jonathan, pelo q sei o # # é só pra fazer where. pelo menos, mesmo no access eu sempre gravo data com ' '. não testei aqui, mas talvez funcione sim com o # # mas é certeza q tb funciona com o ' ', sempre fiz assim. mas de qualquer forma, o melhor jeito de se gravar data em todos os bancos é no formato YYYY-MM-DD (com - mesmo no lugar de /). exemplo:
strsql = "Update dados set entrega='" & Format(data_entrega, "YYYY-MM-DD") & "'"

Isso tava funcionando com o campo dataentrega tipo texto no banco de dados, só que eu precisei mudar esse campo para data/hora por causa de outros problemas e agora essa rotina não funciona direito (Olha só que confusão!), e agora?? O que eu faço? você tem alguma ideia?
nathalia, "não funciona direito" pode signficia mil coisas, a gente não tem como saber se você não explicar direito. de preferencia poste o codigo dessa rotina e explica qual o problema. o q acontece, da mensagem de erro?? não volta o valor esperado?? então volta o q??

Ta bom, foi mal, eu não mando mais MP, é que eu to me acostumando ainda a usar esse forum... Dpois eu posto a minha duvida aqui!

Obs: Meu nome é Nathali, não é Nathalia

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...