1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

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

Discussão em 'Programação' iniciada por vpess, 26 de Março de 2009. (Respostas: 4; Visualizações: 2001)

  1. vpess

    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 Sqlconn13
        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.
     
  2. Granadafeup

    Granadafeup Power Member

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

    vpess Power Member

    Exacto. Mas dá para converter na altura do select, em vez de alterar o tipo do campo???
     
  4. kzip

    kzip Power Member

    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: 27 de Março de 2009
  5. Granadafeup

    Granadafeup Power Member

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

Partilhar esta Página