none
Select MAX RRS feed

  • Pergunta

  • Bom dia Pessoal,

     

    Preciso fazer um select que me retorne o maior valor de um campo de um grupo de registros. Por exemplo:

     

    Tenho uma tabela:

     

    Codigo CodigoModelo NomeModelo PrimeiroAno UltimoAno
    1 1 1.3 L 8V 1976 1981
    2 1 1.3 GL 8V 1978 1981
    3 1 1.3 GLS 8V 1978 1981
    4 1 1.3 Rallye 8V 1980 1981
    5 1 1.3 C 8V 1981 1987
    6 1 1.3 CL 8V 1981 1987
    7 1 1.3 Pick Up City CS 8V 1981 1988
    8 1 1.3 Racing 8V 1981 1982
    9 1 1.3 TOP 8V 1982 1983
    10 1 1.3 Fiorino Pick UP 8V 1985 1988
    11 1 1.3 Fiorino Furgão 8V 1986 1987
    12 2 1.6 MPI ELX 16V 1995 2003
    13 2 1.6 MPI SX 16V 99CV 1996 1996
    14 2 1.6 MPI SX 16V 16CV 1999 2003
    15 2 1.6 MPI HGT 16V 2000 2003
    16 3 2.0 16V 1995 1997
    17 3 2.0 FX 16V 1997 2001
    18 3 4.2 V8 2002 2002

     

    Preciso saber qual é o Ultimo Ano do modelo 1 (CodigoModelo)

     

    Tentei fazer o select como esse abaixo:

     

    <%
      '###Retorna anos correspondente ao modelo selecionado
      Set cmdAnoModelo = Server.CreateObject("ADODB.Command")
      cmdAnoModelo.ActiveConnection = DataVeiculos
      cmdAnoModelo.CommandText = "SELECT MAX(ULTIMOANO) FROM TBLVersoes where CodigoModelo = 1"
      cmdAnoModelo.CommandType = 1
      Set rsAnoModelo = Server.CreateObject("ADODB.Recordset")
      rsAnoModelo.Open cmdAnoModelo, , 3, 3

     

    Response.write rsAnoModelo("ultimomodelo")

    %>

     

    Mas o seguinte erro aparece:

     

    Tipo de erro:
    ADODB.Recordset (0x800A0CC1)
    O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado.
    /teste.asp, line 12

    O que estou fazendo de errado?

     

    Fico no aguardo...

    quinta-feira, 17 de abril de 2008 11:56

Respostas

  • Bom Dia,

     

    Quando você montou o select não havia nenhum campo chamado "ultimomodelo" havia apenas uma expressão MAX(UltimoAno). Como saber que ela se trata do "ultimomodelo". Você precisa efetuar um Alias. Ex:

     

    SELECT MAX(UltimoAno) As UltimoModelo FROM TBLVersoes WHERE CodigoModelo = 1

     

    Ou se preferir, use o RecordSet com base na posição. Ex:

     

    Response.Write rsAnoModelo(0)

     

    [ ]s,

     

    Gustavo

     

    quinta-feira, 17 de abril de 2008 12:15

Todas as Respostas

  • Bom Dia,

     

    Quando você montou o select não havia nenhum campo chamado "ultimomodelo" havia apenas uma expressão MAX(UltimoAno). Como saber que ela se trata do "ultimomodelo". Você precisa efetuar um Alias. Ex:

     

    SELECT MAX(UltimoAno) As UltimoModelo FROM TBLVersoes WHERE CodigoModelo = 1

     

    Ou se preferir, use o RecordSet com base na posição. Ex:

     

    Response.Write rsAnoModelo(0)

     

    [ ]s,

     

    Gustavo

     

    quinta-feira, 17 de abril de 2008 12:15
  • Digitei errado na explicação que dei.... realmente não tem nenhum Ultimo modelo na tabela....

     

    De qualquer forma, funcionou perfeitamente, muito obrigado Gustavo.

    quinta-feira, 17 de abril de 2008 12:26