Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

martitix

OleDbDataReader

Mensagens Recomendadas

martitix    0
martitix

              Dim query as String= "SELECT MAX(ID) AS ID FROM Contactos"
            Dim comando As New OleDbCommand(query, conexao)
            Dim registo As OleDbDataReader = comando.ExecuteReader()

            If registo.HasRows Then
               MsgBox(registo("ID").ToString)
               'lbPosBD.Text = resultado(0) + 1
            Else
               lbPosBD.Text = 1
            End If

resultado da msgBox:

                No data exists for the row/column.

não percebo porquê. Já executei a query e está tudo bem.

EDIT: Geshi adicionado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
obamaself    0
obamaself

Tenta assim:

public function ID_Maximo        
Dim p As contacto= Nothing
        Dim sSql As String = "SELECT MAX(ID) AS ID FROM Contactos"
        Dim sqlComando As New SqlCommand(sSql, objCon)

             objCon.ConnectionString = scon
        objCon.Open()

        Dim registo As SqlDataReader = sqlComando.ExecuteReader

        If registo IsNot Nothing Then
            While registo.Read
                p.id = IIf(registo.Item("id") Is System.DBNull.Value, Nothing, registo.Item("id"))
   
            End While
            registo.Close()
        End If

        objCon.Close()

        Return p
End Function

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
martitix    0
martitix

É uma BD em Access.

Experimentei assim:

  Dim conexao As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\user\Desktop\Principal\bin\Debug\Database2.accdb;Persist Security Info=True;Cache Authentication=True;User ID=Admin")
         conexao.Open()

         If novo_contacto = True Then
            query = "SELECT MAX(ID) AS ID FROM Contactos"
            Dim comando As New OleDbCommand(query, conexao)
            Dim registo As OleDbDataReader = comando.ExecuteReader()

            If registo IsNot Nothing Then
               IIf(registo.Item("ID") Is System.DBNull.Value, lbPosBD.Text = 1, lbPosBD.Text = registo.Item("ID") + 1)
            End If

            registo.Close()
            comando = Nothing

EDIT: Geshi adicionado

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Etiqueta    0
Etiqueta

É uma BD em Access.

Experimentei assim:

  Dim conexao As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\user\Desktop\Principal\bin\Debug\Database2.accdb;Persist Security Info=True;Cache Authentication=True;User ID=Admin")
         conexao.Open()

         If novo_contacto = True Then
            query = "SELECT MAX(ID) AS ID FROM Contactos"
            Dim comando As New OleDbCommand(query, conexao)
            Dim registo As OleDbDataReader = comando.ExecuteReader()

            If registo IsNot Nothing Then
               IIf(registo.Item("ID") Is System.DBNull.Value, lbPosBD.Text = 1, lbPosBD.Text = registo.Item("ID") + 1)
            End If

            registo.Close()
            comando = Nothing

EDIT: Geshi adicionado

o que for Sql colocas OleDb.

Exmplo:

SqlDataReader

OleDbDataReader

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
martitix    0
martitix

o que for Sql colocas OleDb.

Exmplo:

SqlDataReader

OleDbDataReader

claro....mas não é esse o problema.

tenho que declarar sempre um dataAdapter, cada vez que quero sacar os registos da query?

É que no caso, eu só quero sacar um resultado que contem apenas 1 registo.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Caça    24
Caça

Não precisas de um DataAdapter, utiliza o ExecuteScalar.

        Dim query As String = "SELECT MAX(ID) AS ID FROM Contactos"
        Dim comando As New OleDbCommand(query, conexao)
        Dim Registo = comando.ExecuteScalar
        If Registo IsNot Nothing Then
            MsgBox(Registo.ToString)
        Else
            lbPosBD.Text = 1
        End If

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade