Newsgroup: it.comp.lang.visual-basic
Titolo: [?] visualizzazione di tabelle collegate

Salve a tutti, vorrei chiedervi una delucidazione su questo problema
riguardante la visualizzazione di tati in tabelle di dati collegate:
Supponiamo di avere:
una casella di testo text1 collegata al campo campo1 di una tabella di dati
tabella1 abbinata ad un controllo data1
e
una casella di testo text2 collegata al campo campo2 di una tabella di dati
tabella2 abbinata ad un controllo data2
e che tra le due tabelle esista una relazione in cui la tabella2 sia la
primaria e la tabella1 sia la esterna, collegate attraverso i campi campo1 e
campo2.
Se io riposiziono data1 la casella text1 mi visualizza il nuovo valore, ma
vorrei che anche data2 si riposizionasse di conseguenza al record correlato
e che text2 mi visualizzasse il nuovo valore
Esiste un modo per fare in modo che ciò si verifichi automatiamente oppure
occorre fare una ricareca con data2.recordset.finfirst criterio$
specificando nel criterio il valore assunto dal campo1 in tabella1?
Grazie mille per l'attenzione e per ogni suggerimento!
Luca

 wrote

se usi dao, piuttosto di findfirst puoi usare indici e seek, che e'
decisamente rapido, o un dbcombo, che e' pesino..
qui sotto c'e' un esempio ( un po' spurio e magari da ripulire un tantino :)
di seek collegato allo scorrimento del cursore nel 1. controllo data. anche
su un pc lento riesce a recuperare 100-150 linee di testo dalla seconda
tabella a ogni spostamento, senza inchiodarsi tanto.
non so pero' se userei un sistema cosi' per visualizzare contemp parecchi
campi della tabella 2...
Private Sub dbIndice_Reposition()
    On Error GoTo errman
    TxtPri = ShoPri(lblCodPri, MoreData)
    txtSpoglio = ""
    If (Not dbIndice.Recordset.BOF) And (Not dbIndice.Recordset.EOF) Then _
        cmdSpoglio.Enabled = IsSpoglio(lblCodPri)
    cmdTraccia_Click
    Exit Sub
errman:
    MsgBox Error
    Resume Next
End Sub
Private Sub cmdTraccia_Click()
    On Error GoTo errman
    Dim rs As Recordset
    Set rs = MainDb.OpenRecordset("Indice", dbOpenTable)
    rs.Index = "PRINCIPALE_NOME"
    With rs
        .Seek ">=", lblCodPri, "", ""
'Caption = rs!pc & " :: " & rs!indnome
'Exit Sub
        If .EOF Or rs.NoMatch Then
            MsgBox "Non trovo tracciato per la scheda «" & lblCodPri & "»"
            Exit Sub
        End If
        txtSpoglio = ""
        'Do While rs("PriPC") = Val(lblCodPri)
'        Do While Not rs.EOF And rs!pripc = Val(lblCodPri)
        Do While !pripc = Val(lblCodPri)
            If .EOF Then Exit Do
            txtSpoglio = txtSpoglio & !IndTipo & " - " & !IndNome & vbCrLf
            .MoveNext
            If .EOF Then Exit Do
            DoEvents
        Loop
    End With
    rs.Close
    Set rs = Nothing
    Exit Sub
errman:
    MsgBox Error
    Resume Next
End Sub

 wrote in message
VkW64.19714$m62.1...@news.infostrada.it...


 Stefano
ciao, stefano, davvero io ne so poco e niente, ma se pensi a un upsizing di
qualsiasi genere, o a qc che dovra'/potra' girare in ambienti diversi, sql
mi sembra l'unica cosa sensata.
quando parlo di dao/seek ecc, penso sempre a un db locale, con un solo
utente. in lan access non l'ho mai provato bene, dovro' farlo ma non e' che
ne gioisca. e cmq con poche persone appese al db in contemporanea.
sui dbms maggiori sql invece ne so proprio zero :)
il vantaggio e' che puoi in genere preparare presto un modello piuttosto
efficace, e nel frattempo cerchi di mettere a punto un sistema piu'
portabile, standard appunto.
hth, pal