Autor Tema: Obtener Si Tabla Vacia y Maximo ID  (Leído 178 veces)

0 Usuarios y 1 Visitante están viendo este tema.

parauno

  • Bit
  • Mensajes: 7
  • Reputación: +0/-0
    • Ver Perfil
Obtener Si Tabla Vacia y Maximo ID
« en: Octubre 20, 2021, 07:48:19 am »
Que tal colegas?

Tengo la siguiente porción de código, que deberia de obtener sin generar error alguno el max(id) de la tabla que se pasa por argumento, a modo de interactuar con la comunidad ¿que mejoras implementarian? Desde ya, gracias!

Código: [Seleccionar]
Public Function getMaxId(id_tmp As String, tbl_tmp As String, vacio As Boolean, max As Double)
    ' esta funcion comprueba que la tabla que se pasa por argumento NO este vacia
    ' en caso que SI este vacia, maneja el valor NULL para evitar error al consultar el MAX(id)
    ' devuelve un incremento del MAX(id) obtenido
   
    Dim sSQL As String
    Dim registros As Variant
    Dim id As Double
   
   
    Dim rsPrueba As Recordset
    Set rsPrueba = New Recordset
   
    sSQL = "SELECT COUNT(*) AS total FROM " & tbl_tmp & ""
   
    EjecutarOpen rsPrueba, sSQL
   
    registros = rsPrueba!total
   
     If registros = 0 Then
        id = registros
       
        vacio = True
    Else
       
        Set rsPrueba = Nothing
       
        Set rsPrueba = New Recordset
       
        EjecutarOpen rsPrueba, "SELECT MAX(" & id_tmp & ") AS max_id FROM " & tbl_tmp & ""
       
        If IsNull(rsPrueba!max_id) Then
            vacio = True
            registros = "Null"
           
        Else
            vacio = False
            id = rsPrueba!max_id
           
        End If
       
    End If
   
    Set rsPrueba = Nothing
       
   'max = id + 1
   max = val(id) + 1
   
   getMaxId = max
   
End Function

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2837
  • Reputación: +159/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Obtener Si Tabla Vacia y Maximo ID
« Respuesta #1 en: Octubre 22, 2021, 12:35:33 pm »
¿Pq te generaría error?, te estas complicando con ese codigo.
 Si haces un max(tucampo) as Maximo y no hay registros la respuesta sera un recordset con null, no un error
solo tendrías que hacer un Maximo= IIf(IsNull(rs!Maximo), 0, rs!Maximo) desde vb6 y ya


¿Que buscas hacer? un campo autogenerado
Me encuentras en YAcosta.com