Newsgroup: it.comp.appl.access
Titolo: Caso-controllo

Ecco il problema io ho due tabelle in access.
nella prima ci sono 300 pazienti con codice medico,età paziente, sesso
paziente
nell'altra tabella ci sono 100.000 pazienti con gli stessi campi,
quello che devo fare io è questo:
per ogni paziente del primo devo estrarne 6 dal secondo che abbiano lo
stesso codice medico,età paziente e sesso paziente.
In pratica devo arrivare ad una terza tabella in cui ci siano 1800
pazienti cioè devo trovare i "controlli".
Ringrazio in anticipo tutti quelli che saranno in grado di darmi
qualche suggerimento.
Ciao Emiliano

Emiliano ha scritto:

Per estrarre dalla seconda quelli con gli stessi codici della prima fai
una query con le due tabelle, fai una relazione su tutti i tre campi che
devono corrispondere e prendi tutti i campi (o l'asterisco) dalla seconda
tabella.
Per prendere, per ogni record della prima tbl, solo sei dalla seconda non
saprei, il problema è più complesso e bisogna studiare una soluzione
apposita.
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:8d866224.0404...@posting.google.com...

Se la struttura delle tre tabelle è la Seguente:
ID                       Contatore e chiave primaria
CodiceMedico    Testo
EtàPaziente         Numerico
SessoPaziente     Testo
Se la prima tabella (quella con 300 record) si chiama Tabella1.
Se la seconda tabella (quella con 100.000 record) si chiama Tabella2.
Se la terza tabella (quella in cui vuoi registrare i 1800 record) si chiama
Tabella3.
Se in Tbella3 vuoi registrare per ogni record  di Tabella1 un massimo di 6
record di Tabella2 che abbiano lo stesso CodiceMedico, la stessa EtàPaziente
e lo stesso SessoPaziente del record di Tabella1.
Crea Tabella3 vuota ed esegui il seguente codice VBA:
Dim rst As DAO.Recordset
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM Tabella3;"
Set rst = CurrentDb().OpenRecordset("Tabella1")
rst.MoveFirst
Do Until rst.EOF
    DoCmd.RunSQL "INSERT INTO Tabella3 ( ID, " & _
    "CodiceMedico, EtàPaziente, SessoPaziente ) " & _
    "SELECT TOP 6 ID, CodiceMedico, EtàPaziente, " & _
    "SessoPaziente FROM Tabella2 " & _
    "WHERE ((CodiceMedico='" & rst!CodiceMedico & _
    "') AND (EtàPaziente=" & rst!EtàPaziente & _
    ") AND (SessoPaziente='" & rst!SessoPaziente & "'));"
    rst.MoveNext
Loop
DoCmd.SetWarnings True
Set rst = Nothing
Il codice VBA di cui sopra fa riferimento alla libreria Microsoft DAO
quindi, se usi una versione di Access successiva ad Access 97, aggiungi ai
riferimenti del tuo database tale libreria.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:bsWcc.115984$FJ6.4...@twister1.libero.it...

Viva Dio Roberto che qualcuno usa VBA.
SunRex

...


 Ti ringrazio novamente ed aspetto tue notizie.
La prima notizia che ricevi č che devi scrivere correttamente DOPO il
quoting!!!
Antonio

...
Intanto mi scuso per l'errore nel rispondere nel messaggio e poi
volevo dire che funziona tutto bene e sono riuscito anche a fare
qualche piccola modifica.Quindi pur non sapendo niente di VBA (in
genere utilizzo sql)grazie all'aiuto di Roberto sono riuscito a
risolvere tutto.
Grazie ciao Emiliano