lg_SQL = "SELECT Anagrafe.Cod_Utente, Anagrafe.Cod_Utente, Anagrafe.Anagrafe, Anagrafe.Data_nascita, Reparti.Cod_Reparto, Reparti.Reparto,(SELECT COUNT(*) FROM CERTIFICAZIONE WHERE CERTIFICAZIONE.Cod_Utente = Anagrafe.Cod_Utente) AS Certificazioni FROM Anagrafe INNER JOIN REPARTI ON [ANAGRAFE].COD_REPARTO = [Reparti].COD_REPARTO ORDER BY Cod_Utente"
Questa select visualizza i dati della tabella Anagrafe, la descrizione del reparto collegato alla scheda anagrafe e il numero di record dell'archivio certificazioni collegato sempre alla scheda Anagrafe.
Per successivi problemi ti consiglio di aprire il database con access, crearti una query, provarla e incollarla in VB (con le dovute modifiche!) oppure usare un manuale di SQL.
Ciao
P.S. eccoti il sorgente completo:
Public g_MyADOConn As New ADODB.Connection
.
.
g_Connessione = "Provider=" & g_Provider & ";" & "Data Source=" & g_DataSource & ";" & "Persist Security Info=True;"
.
Set g_MyADOConn = New ADODB.Connection
g_MyADOConn.Open g_Connessione
.
Private lg_MyADOSetRighe As New ADODB.Recordset
lg_SQL=.....(vedi sopra)
If lg_MyADOSetRighe.State = 1 Then lg_MyADOSetRighe.Close
lg_MyADOSetRighe.CursorLocation = adUseClient
lg_MyADOSetRighe.LockType = adLockPessimistic
lg_MyADOSetRighe.Open lg_SQL, g_MyADOConn, adOpenDynamic
.
.
Set lst_Lista.Recordset = lg_MyADOSetRighe
'In una procedura che chiamerai RefreshGriglia setta:
.
.
lst_Lista.FormatString = "C|>Codice|Anagrafe|>Data nascita|C|<Reparto|>Certificazioni"
lst_Lista.ColWidth(0) = 0 ' C
lst_Lista.ColWidth(1) = 1000 ' Codice
lst_Lista.ColWidth(2) = 4500 ' Anagrafe
lst_Lista.ColWidth(3) = 1200 ' Data nascita
lst_Lista.ColWidth(4) = 0 ' Cod_Reparto
lst_Lista.ColWidth(5) = 2500 ' Reparto
lst_Lista.ColWidth(6) = 1500 ' Certificazioni
' Mentre per ritrovare una riga:
Private Sub lst_Lista_Click()
lg_CodiceStr = lst_Lista.TextMatrix(lst_Lista.RowSel, 0)
End Sub
ecc. ecc.

Rispondi quotando