[Ajuda] Select max() a BD Access no VB

vpess

Power Member
Boas,

Preciso de ajuda para resolver um problema. Já perdi tempos e tempos a tentar resolver e nada.

Tenho o seguinte código para criar uma númeração sequencial.
O campo no é do tipo texto.

Tabela: clientes
id | no | nome
13 | 2 | vitor

PHP:
Private Sub Form_Load()
Set conn = New ADODB.Connection
    conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=D:\Projectos VB\bd.mdb"
    Set rs = New ADODB.Recordset
    Sql = "select max(no) + 1 as numero from clientes"
    rs.Open Sql, conn, 1, 3
    nno = rs!numero
    MsgBox (nno)
    no.Text = nno
    rs.Close
End Sub


Logo ao fazer o max(no) + 1, deveria retornar-me 3, quando me retorna 1.
 
Porque é que a coluna no está a texto então ? Se tem lá numeros e estas a tentar a fazer operações numericas sobre um campo de texto (<-- Razão do teu problema) deves mudar a coluna para inteiro ou um tipo numerico que te agrade.
 
Porque é que a coluna no está a texto então ? Se tem lá numeros e estas a tentar a fazer operações numericas sobre um campo de texto (<-- Razão do teu problema) deves mudar a coluna para inteiro ou um tipo numerico que te agrade.

Exacto. Mas dá para converter na altura do select, em vez de alterar o tipo do campo???
 
Dá para converter no select, mas é aquelas soluções que se possível se devem evitar.

Código:
[COLOR=#000000][COLOR=#0000bb]Sql [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#dd0000]"select max(val(no)) + 1 as numero from clientes"[/COLOR][/COLOR]


Edit:
Julgo que o Access permite usar a função max() com campos texto, mas faz ordenação de strings. Ou seja "9">"10".
 
Última edição:
Dá para converter no select, mas é aquelas soluções que se possível se devem evitar.

:x2:

vpess pela minha experiência tudo é possível no mundo da programação, mas nem todos os caminhos são os mais correctos, ou pelo menos, boa prática. Ter um campo de uma base de dados populado com numeros, e este estar definido com Texto não é boa prática.
 
Back
Topo