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

Dúvida_RDO_Inserção


Vick

Pergunta

Pessoal, estou tentando inserir dados através do VB no Banco de Dados, mas está dando erro (postei o erro a baixo), mas não sei onde está o erro. Gostaria de saber tb se o RDO é igual ao DAO, pois acho pouquíssimas coisas escrita do RDO inserção, exclusão, etc.

erro

run-time error '40002'

37000: [Microsoft][ ODBC SQL Server Driver] [ SQL Server] Statement(s) could not be prepared

Private Sub Form_Load()
    'Configuração da largura do grid
    GrdCliente.ColWidth(0) = 2200
    GrdCliente.ColWidth(1) = 6000
    
    'Configuração do título do grid
    GrdCliente.Row = 0
    GrdCliente.Col = 0
    GrdCliente.Text = "Código"
    GrdCliente.Col = 1
    GrdCliente.Text = "Razão Social"
    
    Call incluiDadosGrid
    
    
End Sub

Private Sub incluiDadosGrid()
    Dim sql
    Dim contador
       
        conexao.BeginTrans
        For contador = 1 To GrdCliente.Rows
            sql = "insert into CLIENTE (Codigo, RazaoSocial) values (" + GrdCliente.TextMatrix(contador, 1) + "," + GrdCliente.TextMatrix(contador, 1) + ")"
            
            conexao.Execute sql$
            
            If conexao.RowsAffected = 0 Then
                conexao.RollbackTrans
            End If
        Next
        
        conexao.CommitTrans
            
End Sub

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

não sei muito sobre o RDO, mas acho q é mais parecido com ADO do q com DAO.

na verdade tb recomendo o uso do ADO em vez de DAO ou RDO, porque o ADO pode fazer conexao por OLE DB, q é uma tecnologia mais recente q a ODBC.

mas quanto ao seu erro em q linha exatamente ele ocorre??

primeiro de tudo, a conexao já foi aberta??

outra coisa, olhe a sua linha do insert. campos texto devem ir entre aspa simples no insert. exemplo:

sql = "insert into CLIENTE (Codigo, RazaoSocial) values (" + GrdCliente.TextMatrix(contador, 1) + ", '" + GrdCliente.TextMatrix(contador, 1) + "')"

nesse exemplo, o campo codigo seria do tipo numero e o campo razaosocial do tipo texto, não sei se é exatamente assim q ta no seu banco.

mas agora, na verdade não entendi o q você ta querendo fazer...

a hora q o form for carregado, o grid não vai estar vazio?? porque você esta tentando incluir no banco os dados de um grid vazio??

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigada pela dúvida respondida.

Até gostaria de usar o ADO, pois tem muito material explicando sobre ele, mas é que foi pedido para fazer usando RDO. Só que não acho material explicando sobre RDO. você teria algum material para me indicar que explique sobre RDO usando com sqlServer2008 e VB6?

Sim a conexão foi aberta.

O erro tava acontecendo no EXECUTE. Li o que você falou sobre inserir o grid vazio, e consertei.

Agora tenho um outro problema. Não sei qual o comando de parada devo usar no FOR. Usei 4, pois só tem quatro registros no BD, mais imagino que isso não é certo usar um número, queria alguma coisa que representasse tudo que tenho no BD. Então gostaria de deixar isso automático para a medida que for adicionando registros, ele ir considerando. Tem alguma forma de fazer isso???? :blink:

tentei algo assim (mas não funcionou)

rs.eof - Mais aí lembrei que ele retorna um booleano e não um número

For i = 1 To rs.EOF
        GrdCliente.TextMatrix(i, 0) = rs("Codigo")
        GrdCliente.TextMatrix(i, 1) = rs("razaoSocial")
        rs.MoveNext
    Next i
Coloquei o trecho do código abaixo.
Private Sub preencheGrid()
Dim rs As rdoResultset
Dim sql$
    
    sql$ = " SELECT Codigo, razaoSocial FROM Cadastro "
             
    Set rs = conexao.OpenResultset(Name:=sql$, Type:=rdOpenDynamic, LockType:=rdConcurReadOnly)
    
    rs.MoveFirst
    
    For i = 1 To 4
        GrdCliente.TextMatrix(i, 0) = rs("Codigo")
        GrdCliente.TextMatrix(i, 1) = rs("razaoSocial")
        rs.MoveNext
    Next i
    
    rs.Close
    
End Sub

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,5k
×
×
  • Criar Novo...