Nathi Postado Outubro 21, 2008 Denunciar Share Postado Outubro 21, 2008 (editado) 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 IfNa 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 Outubro 21, 2008 por kuroi Adicionar tag CODE Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Outubro 21, 2008 Denunciar Share Postado Outubro 21, 2008 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 strsqlDepois vê se encontra algum erro na instrução "sql".Se não encontrar nada, posta aqui porque pode ajudar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Nathali -- Postado Novembro 3, 2008 Denunciar Share Postado Novembro 3, 2008 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 strsqlDepois vê se encontra algum erro na instrução "sql".Se não encontrar nada, posta aqui porque pode ajudarEu 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?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Novembro 3, 2008 Denunciar Share Postado Novembro 3, 2008 (editado) 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 Novembro 3, 2008 por kuroi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Nathi Postado Novembro 3, 2008 Autor Denunciar Share Postado Novembro 3, 2008 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... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Novembro 3, 2008 Denunciar Share Postado Novembro 3, 2008 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!!ObrigadaSe 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í ! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Novembro 3, 2008 Denunciar Share Postado Novembro 3, 2008 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?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Nathi Postado Novembro 4, 2008 Autor Denunciar Share Postado Novembro 4, 2008 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Nathi
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:
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 kuroiAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
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.