• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

_neiah__

Dúvida na contagem de dados!

9 mensagens neste tópico

Boas!

Tenho estado a fazer um programa em vb.net com ligação a Access, e o meu problema é o seguinte. Eu preciso de contar quantos registos existem na tabela, para que depois possa adicionar mais um, e aparecer directamente numa textbox o novo código de entrada.

Estou a utilizar esta linha de código:

dim sql2 as Integer
sql2 = "SELECT max(num_entrada) FROM registo_entrada;"
sql2 = sql2 + 1
textBox1.Text = sql2

Mas depois dá.me este erro na abertura do programa: " Conversion from string "SELECT max(num_entrada) FROM reg" to type 'Integer' is not valid.l "

Alguém me pode ajudar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

atenção que o max e mais correcto...porque no caso de queimares numeros com o count corres o risco de apanhar um que ja tenha sido usado.. nao obstante, isso diz respeito apenas à instrução de SQL...continuas a ter que ir ler à base de dados.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu já utilizei o count e foi buscar um que já tinha sido usado anteriormente... O que não pode acontecer :X

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

atenção que o max e mais correcto...porque no caso de queimares numeros com o count corres o risco de apanhar um que ja tenha sido usado.. nao obstante, isso diz respeito apenas à instrução de SQL...continuas a ter que ir ler à base de dados.

pois...por isso o max e a melhor opção

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois...por isso o max e a melhor opção

Concordo, só estava a alargar o conhecimento ao pessoal :D

Mas como o José Lopes diz não te safas de ter de ler dados na BD...

EDIT: Não tinha nada que fazer e até me despertou curiosidade a tua dúvida logo esta foi a forma (não sei se a mais correcta) de fazer isso que me saiu, não testei muito mas deve dar:

        Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection()
        dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " & "\caminho da tua bd;"
        Dim strQuery As String = "SELECT max(num_entrada) FROM reg"
        Dim num As Integer

        dbConn.Open()

        Dim dbCmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(strQuery, dbConn)

        num = dbCmd.ExecuteScalar()

        dbConn.Close()

       textBox1.Text = num + 1

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

dim sql2 as Integer
sql2 = "SELECT max(num_entrada) FROM registo_entrada;"
sql2 = sql2 + 1
textBox1.Text = sql2

Já reparaste no que estás a fazer?

Declaras sql2 como INTEGER, logo de seguida atribuís-lhe uma STRING e depois queres somar 1 à STRING.

Tens de tirar o ";" do final, que não está lá a fazer nada e "lançar a query para a base de dados" tal como o KiNgPiTo sugere, e somas mais um ao resultado dessa query, também tal como ele te exemplificou.

Se não estás a usar colunas com identidade única, um COUNT é impensável.

O max vai te buscar o maior valor encontrado na coluna e é isso que pretendes.

Não é bem uma identidade porque se tiveres relações e não as apagares vão surgir granéis. O ideal é usar identidade. Ou a cena do access que faz o mesmo mas não me recordo do nome. Numeração automática? Não sei.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Concordo, só estava a alargar o conhecimento ao pessoal :D

Mas como o José Lopes diz não te safas de ter de ler dados na BD...

EDIT: Não tinha nada que fazer e até me despertou curiosidade a tua dúvida logo esta foi a forma (não sei se a mais correcta) de fazer isso que me saiu, não testei muito mas deve dar:

        Dim dbConn As OleDb.OleDbConnection = New OleDb.OleDbConnection()
        dbConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " & "\caminho da tua bd;"
        Dim strQuery As String = "SELECT max(num_entrada) FROM reg"
        Dim num As Integer

        dbConn.Open()

        Dim dbCmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(strQuery, dbConn)

        num = dbCmd.ExecuteScalar()

        dbConn.Close()

       textBox1.Text = num + 1

Cumprimentos

Usei o código que disseste e funcionou na perfeição.

Muito Obrigado a todos ;)

0

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