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

Comando Sql


Guest Danillo

Pergunta

Guest Danillo

não sei se a funcao estao certa, mas esta igual as outras de um projeto ak que to fazendo de uma apostila pra treina. Como a apostila vem cheia e recheada de erros queria que me dessem um help.

Private Sub GravarDados()
 Dim cnnComando As New ADODB.Command
 Dim vCod As Long
 Dim vConfMsg As Integer
 Dim vErro As Boolean
 On Error GoTo ErrGravacao
 vCod = Val(txtcodlivro.Text)
 vConfMsg = vbExclamation + vbOKOnly + vbApplicationModal
 vErro = False
 If vCod = 0 Then
    MsgBox "O campo Código não foi preenchido.", vConfMsg, "Erro"
    vErro = True
 End If
 If txtTitulo.Text = Empty Then
    MsgBox "O campo Título não foi preenchido.", vConfMsg, "Erro"
    vErro = True
 End If
 If txtAutor.Text = Empty Then
    MsgBox "O campo Autor não foi preenchido.", vConfMsg, "Erro"
    vErro = True
 End If
 If vCodEditora = 0 Then
    MsgBox "Não foi selecionada uma Editora.", vConfMsg, "Erro"
    vErro = True
 End If
 If vCodCategoria = 0 Then
    MsgBox "Não foi selecionada uma Categoria.", vConfMsg, "Erro"
    vErro = True
 End If
 If vErro Then Exit Sub
 Screen.MousePointer = vbHourglass
 With cnnComando
        .ActiveConnection = cnnBiblio
        .CommandType = adCmdText
   If vInclusao Then
        .CommandText = "INSERT INTO Livros (CodLivro, Titulo, Autor, CodEditora, " & _
               "CodCategoria, AcompCD, AcompDisquete, Idioma, Observacoes) " & _
               "VALUES (" & vCod & ",'" & _
               txtTitulo.Text & "','" & _
               txtAutor.Text & "'," & _
               vCodEditora & "," & _
               vCodCategoria & "," & _
               vAcompCD & "," & _
               vAcompDisquete & "," & _
               vIdioma & ",'" & _
               txtObservacoes.Text & "');"
                
           Else
              .CommandText = "UPDATE Livros SET Titulo = '" & txtTitulo.Text & "', Autor = '" & txtAutor.Text & "', CodEditora = " & vCodEditora & _
                       ", CodCategoria = " & vCodCategoria & ", AcompCD = " & vAcompCD & ", AcompDisquete = " & vAcompDisquete & ", Idioma = " & vIdioma & ", Observacoes = '" & txtObservacoes.Text & "' WHERE CodLivro = " & vCod & ";"
        End If
             .Execute
        End With
        MsgBox "Gravação concluída com secesso!", vbApplicationModal + vbInformation + vbOKOnly, "Gravação OK"
        limpartela

Saida:
   Screen.MousePointer = vbDefault
   Set cnnComando = Nothing
   Exit Sub
   
ErrGravacao:
   With Err
        If .Number <> 0 Then
           MsgBox "Houve um erro na Gravação dos dados no registro." & vbCrLf & "A operação não foi completada.", vbExclamation + vbOKOnly + vbApplicationModal, "Operação cancelada"
           .Number = 0
           GoTo Saida
        End If
  End With
End Sub

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0
Guest Visitante

mais na parte do with cnnComando que da o erro, quando vou salvar algum registro. Didigtei tudo certo ( eu acho) so que não está funfando ainda =(

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Quando eu coloco os dados direto no arquivo.mdb onde os dados ficam eles funcionam caso eu digite o cod deles no formulario e aparece tudo certinha, so na hora de gravar que começa a chatisse de erro.

Bom , tirei o On Error goTo e apareceu o seguinte:

Run Time Error ;

Nehum valor foi fornecido para um ou mais parâmetros necessários.

alguém sabe o que isso significa ??

Link para o comentário
Compartilhar em outros sites

  • 0

O nome de algum campo aqui:

INSERT INTO Livros (CodLivro, Titulo, Autor, CodEditora, " & _
               "CodCategoria, AcompCD, AcompDisquete, Idioma, Observacoes) " & _
               "VALUES (" & vCod & ",'" & _
               txtTitulo.Text & "','" & _
               txtAutor.Text & "'," & _
               vCodEditora & "," & _
               vCodCategoria & "," & _
               vAcompCD & "," & _
               vAcompDisquete & "," & _
               vIdioma & ",'" & _
               txtObservacoes.Text & "');"
[/code] ou aqui:
[code]              .CommandText = "UPDATE Livros SET Titulo = '" & txtTitulo.Text & "', Autor = '" & txtAutor.Text & "', CodEditora = " & vCodEditora & _
                       ", CodCategoria = " & vCodCategoria & ", AcompCD = " & vAcompCD & ", AcompDisquete = " & vAcompDisquete & ", Idioma = " & vIdioma & ", Observacoes = '" & txtObservacoes.Text & "' WHERE CodLivro = " & vCod & ";"

não existe na tabela. veja se você digitou todos os nome direito. se não conseguir descobrir, tente executar o insert/uptade direto no banco que ele vai apontar qual é o campo.

Link para o comentário
Compartilhar em outros sites

  • 0

qual o seu banco de dados? acho que essa mensagem "Nehum valor foi fornecido para um ou mais parâmetros necessários." é do access não?

se for access é só abrir uma nova consulta, mudar para o modo sql (o botaozinho ao lado do botao de gravar), colar o insert e excutar (clique na exclamacao). se for sql, é so executar no query analizer.

mas você não precisa fazer isso necessariamente. como eu disse, você conferiu os nomes dos campos se estao digitados certo e se todos os campos existem mesmo na tabela?

Link para o comentário
Compartilhar em outros sites

  • 0

Sim e Sim, É o Acess e já conferi 3 vezes . Agora conferi dinovo , acho que vou deletar a tabela e fazer-la dinovo . Eu mudei o código para esse abaixo e mesmo assim esta com erro.

If vInclusao Then
        [b]vSQL [/b] = "INSERT INTO Livros (CodLivro, Titulo, Autor, CodEditora, " & _
             "CodCategoria, AcompCD, AcompDisquete, Idioma, Observacoes) " & _
             "VALUES (" & vCod & ",'" & _
             txtTitulo.Text & "','" & _
             txtAutor.Text & "'," & _
             vCodEditora & "," & _
             vCodCategoria & "," & _
             vAcompCD & "," & _
             vAcompDisquete & "," & _
             vIdioma & ",'" & _
             txtObservacoes.Text & "');"
   Else
       [b]vSQL [/b] = "UPDATE Livros SET Titulo = '" & txtTitulo.Text & _
            "', Autor = '" & txtAutor.Text & _
            "', CodEditora = " & vCodEditora & _
            ", CodCategoria = " & vCodCategoria & _
            ", AcompCD = " & vAcompCD & _
            ", AcompDisquete = " & vAcompDisquete & _
            ", Idioma = " & vIdioma & _
            ", Observacoes = '" & txtObservacoes.Text & _
            "' WHERE CodLivro = " & vCod & ";"
   End If
   With cnnCOmando
         .ActiveConnection = cnnBiblio
         .CommandType = adCmdText
         [b].CommandText = vSQL[/b]
         .Execute
         
   End With
   MsgBox "Gravação concluída com sucesso.", vbApplicationModal + vbInformation + vbOKOnly, _
      "Gravação OK"
   limpartela
Tipo , eu to achando tambem que essas variaveis vCodEditora e categoria não está recebendo algum valor , pode ser isso ?
Private Sub cboEditora_Click()
 With cboEditora
      If .ListIndex <> -1 Then
         vCodEditora = .ItemData(.ListIndex)
      Else
         vCodEditora = 0
      End If
 End With
End Sub
Private Sub chkAcompCD_Click()
If chkAcompCD.Value = vbChecked Then
    vAcompCD = True
Else
   vAcompCD = False
 End If
End Sub

Outra coisa. Quando eu entro direto no banco de dados e digito la os dados nos campos e entro no projeto , o comando select funciona direirinho sem nehum erro, to achando que este erro vadio esta no GravarDados, vo refazer a tabela e vê no que é que dá.

Link para o comentário
Compartilhar em outros sites

  • 0

Coloque um Stop no código e vá executando linha a linha (com a tecla F8), e também coloque o mouse sobre os nomes das variáveis para poder ver seus valores (se estão realmente lá e se são corretos). Experimente também fazer um Debug.Print na instrução SQL que vai ser executada e depois copie e cole ela em uma consulta do Access, como o kuroi já tinha sugerido.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

esta certo o valor de vSQL (string para comando sql) estar = "" ??

não mudei nada e aindo por cima o erro paro , so que ele não envia nada pra tabela.

Link para o comentário
Compartilhar em outros sites

  • 0

Descobri onde esta o erro (FINALMENTE , ignorem os ultimos posts)

Os erros estao nas duas variáveis (vAcompCD , vAcompDisquete ) eles são tipo CheckBox , já na tabela deixei os campos pertecentes as variáveis como Sim/não (Sim/não SIM) que no VB estao True/False (variaveis) quero saber como mandar esse dado pra la sendo que o meu e true or false.

Link para o comentário
Compartilhar em outros sites

  • 0

Descobri onde esta o erro (FINALMENTE , ignorem os ultimos posts)

Os erros estao nas duas variáveis (vAcompCD , vAcompDisquete ) eles são tipo CheckBox , já na tabela deixei os campos pertecentes as variáveis como Sim/não (Sim/não SIM) que no VB estao True/False (variaveis) quero saber como mandar esse dado pra la sendo que o meu e true or false.

Se me lembro bem, se você colocar True e False literalmente serve. Mas, você também pode utilizar o valor 0 para False e qualquer outro valor para True (o usual é -1 ou 1).

Abraços,

Graymalkin

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...