• User Attivo

    tabelle collegate di database e visualizzazione!!

    ciao a tutti,
    ho bisogno di capire dove posso infilare la query che interroghi la tabella uffici per far apparire sulla pagina la dicitura ad es. "Ufficio Personale" anzichè l'id 341 dell'ufficio...nel codice che riporto sotto!
    aspetto vostre illuminazioni!!!

    [code]
    With objRecordset
    .CursorType = adOpenForwardOnly
    .CursorLocation = adUseClient
    .LockType = adLockReadOnly
    .CacheSize = rm
    .PageSize = rm
    .Source = "SELECT ID, Nome, Cognome, Id_ufficio FROM dipendenti"
    .ActiveConnection = strConnection
    .Open
    Set .ActiveConnection = Nothing
    intTtp = .PageCount
    If NOT .EOF then
    .AbsolutePage = ipn
    arrData = .GetRows(rm)
    intColsTot = Ubound(arrData,1)
    intRowsTot = Ubound(arrData,2)
    End If
    End With
    [code]

    grazie a tutti,

    Marco


  • Moderatore

    Io generalmente mi creo sempre una funzioncina per queste cose, almeno la posso riutilizzare.

    
    Function Ufficio(iId)
      if isNumeric(iId) Then
        Dim strSql
        Dim objRs
        Set objRs = Server.createobject ("ADODB.RecordSet")
        strSql = "SELECT NOME FROM TABELLA WHERE Id_ufficio= " & iId
        objRs.open strSql, objConn
        If Not objRs.Eof
           Ufficio = objRs("NOME")
        Else
           Ufficio = ""
        End If
        objRs.Close
        Set objRs = Nothing
      Else
        Ufficio = ""
      End If
    End Function
    
    **Dim NomeUfficio**
    
    With objRecordset
      .CursorType = adOpenForwardOnly
      .CursorLocation = adUseClient
      .LockType = adLockReadOnly
      .CacheSize = rm
      .PageSize = rm
      .Source = "SELECT ID, Nome, Cognome, Id_ufficio FROM dipendenti"
      .ActiveConnection = strConnection
      .Open 
     Set .ActiveConnection = Nothing
      intTtp = .PageCount
      If NOT .EOF then
       .AbsolutePage = ipn
        arrData = .GetRows(rm)
        intColsTot = Ubound(arrData,1) 
        intRowsTot = Ubound(arrData,2)
    **NomeUfficio = Ufficio(objRecordset("Id_ufficio"))**
      End If
    End With
    

    Ciao
    :ciauz::ciauz:


  • User Attivo

    @sherlock said:

    ciao a tutti,
    ho bisogno di capire dove posso infilare la query che interroghi la tabella uffici per far apparire sulla pagina la dicitura ad es. "Ufficio Personale" anzichè l'id 341 dell'ufficio...nel codice che riporto sotto!
    aspetto vostre illuminazioni!!!

    >
    With objRecordset
    .CursorType = adOpenForwardOnly
    .CursorLocation = adUseClient
    .LockType = adLockReadOnly
    .CacheSize = rm
    .PageSize = rm
    .Source = "SELECT ID, Nome, Cognome, Id_ufficio FROM dipendenti"
    .ActiveConnection = strConnection
    .Open 
    Set .ActiveConnection = Nothing
    intTtp = .PageCount
    If NOT .EOF then
    .AbsolutePage = ipn
    arrData = .GetRows(rm)
    intColsTot = Ubound(arrData,1) 
    intRowsTot = Ubound(arrData,2)
    End If
    End With
    [code]
     
    grazie a tutti,
     
    Marco
     
    devi cambiare la query. Per fare ciò che chiedi è necessario fare un inner join su un'altra eventuale tabella che abbia tutte le corrispondenze idufficio ->nome ufficio
     
    ad esempio 
    se la tabella che si chiama "uffici" è composta ad esempio dai campi ID e NomeUfficio devi usare come query: 
     
    [CODE]SELECT dipendenti.ID, dipendenti.nome, dipendenti.cognome, dipendenti.id_ufficio, uffici.NomeUfficio
    FROM dipendenti INNER JOIN uffici ON dipendenti.id_ufficio = uffici.ID;
    
    

    e poi nel punto in cui lo stampi a video invece di chiamarti id_ufficio ti richiami Nomeufficio.

    Se hai bisogno di altri chiarimenti contattami pure
    Ciao,
    Giuseppe


  • Moderatore

    eLLeGi ha perfettamente ragione, io userei però un LEFT OUTER JOIN, testando che il nome dell'ufficio non sia *null, *così da evitare di saltare qualche utente...


  • User Attivo

    @artcava said:

    eLLeGi ha perfettamente ragione, io userei però un LEFT OUTER JOIN, testando che il nome dell'ufficio non sia *null, *così da evitare di saltare qualche utente...

    si giusto 🙂


  • User Attivo

    grazie ragazzi!
    questa del join è una gran cosa!!! Anche con la funzione di Legolas ero riuscito ;)!! Quindi due ottimi metodi entrambi...
    grazie davvero di cuore per tutto il supporto che mi avete dato!

    Marco