Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

confronta i records di due tabelle o query e identifica le differenze

1,249 views
Skip to first unread message

lorenzo57

unread,
Jun 30, 2012, 6:47:44 AM6/30/12
to
Un saluto a tutti.
Non sono un esperto di access ma cerco di imparare.
Il mio problema:
Sto utilizzando la routine di Alberto Plano " confronta i records di
due tabelle o query e identifica le differenze " dal sito comune e
desidererei che le differenze mi vengano inserite in una nuova tabella
anzichè tramite un messaggio.
Un vero ringraziamento a coloro che vorranno darmi un aiuto.
Lorenzo

Karl Donaubauer

unread,
Jun 30, 2012, 12:09:02 PM6/30/12
to
lorenzo57 wrote:
> ...
> Sto utilizzando la routine di Alberto Plano " confronta i records di
> due tabelle o query e identifica le differenze " dal sito comune e
> desidererei che le differenze mi vengano inserite in una nuova tabella
> anzichč tramite un messaggio.
> ...

Una versione semplice senza cambiare molto nella procedura:

Creati una tabella "tblDiff" con due campi:
DiffId (contatore)
Diff (memo)

Nella procedura ci sono 4 cose da cambiare:

'dopo questa riga
Dim T1 As DAO.Recordset, T2 As DAO.Recordset
'inserisci:
Dim rsDiff As DAO.Recordset

'dopo questa riga
Set T2 = dbase.OpenRecordset(Tab2, dbOpenSnapshot)
'inserisci:
Set rsDiff = dbase.OpenRecordset("tblDiff", dbOpenDynaset)

Sostituisci le due righe:
MsgBox messaggio
con

rsDiff.AddNew
rsDiff!Diff = Replace(messaggio, Chr$(10), " ")
rsDiff.Update

--
Ciao
Karl
*********
Access FAQ: http://www.donkarl.com/it


lorenzo57

unread,
Jun 30, 2012, 12:54:51 PM6/30/12
to
On 30 Giu, 18:09, "Karl Donaubauer" <nos...@donkarl.com> wrote:
> lorenzo57 wrote:
> > ...
> > Sto utilizzando la routine di  Alberto Plano " confronta i records di
> > due tabelle o query e identifica le differenze " dal sito comune e
> > desidererei che le differenze mi vengano inserite in una nuova tabella
> > anzichè tramite un messaggio.
Ti ringrazio Karl. Ci provo.

lorenzo57

unread,
Jun 30, 2012, 1:36:26 PM6/30/12
to
> Ti ringrazio Karl. Ci provo.- Nascondi testo citato
>
> - Mostra testo citato -

Karl, perfetto.

Karl , scusami se approfitto della tua pazienza:
Tab1
Num_doc Data_Doc Importo_Doc
1234 12/03/2012 345,00
255 06/03/2009 567,00
456 06/05/2010 980,00

Tab2
Num_doc Data_Doc Importo_Doc
12345 12/03/2012 345,00
2554 06/03/2009 567,00
456 06/05/2010 980,00
Come posso dal confronto trasferire in una tabella le differenze in
campi diversi?
Es.
tblDiff
Diff_Num_doc Diff_Data_Doc Diff_Importo_Doc
1234 12/03/2012 345,00
255 06/03/2009 567,00

Karl, non ti disturberò più.

Grazie





lorenzo57

unread,
Jul 1, 2012, 9:28:00 AM7/1/12
to
> 255
>
>karl, Grazie ancora
>


Bruno Campanini

unread,
Jul 2, 2012, 5:20:27 AM7/2/12
to
After serious thinking lorenzo57 wrote :
Tu vorresti trasferire in una nuova tabella tutti quei record che, con
riferimento al campo Num_doc, si trovano in Tab1 ma non anche in Tab2.
Analogamente per i campi Data_Doc e Importo_doc.
E quant'altri campi ancora?
E non te ne frega niente di quei record che si trovano in Tab2 ma non
anche in Tab1.

È esatto?

Bruno


lorenzo57

unread,
Jul 2, 2012, 5:45:10 AM7/2/12
to
Sì, Bruno.

lorenzo57

unread,
Jul 2, 2012, 6:06:46 AM7/2/12
to
On 2 Lug, 11:20, Bruno Campanini <bruno...@libero.it> wrote:
Non m'interessa dei record che si trovano in Tab2 ma non in Tab1.

Karl Donaubauer

unread,
Jul 2, 2012, 6:23:50 AM7/2/12
to
lorenzo57 wrote:
> ...
> Non m'interessa dei record che si trovano in Tab2 ma non in Tab1.

Puo darsi che che ti basta una semplice query invece del codice?
Se crea una nuova query nel primo dialogo puoi scegliere la voce
"Creazione guidata Query ricerca dati non corrispondenti".

Vedi anche:

Record di A non presenti in B
http://www.donkarl.com/it?FAQ3.16


--
Ciao
Karl
*********
Access FAQ: www.donkarl.com/it



lorenzo57

unread,
Jul 2, 2012, 6:30:45 AM7/2/12
to
Karl, tra le due tabelle non ho un valore univoco.

lorenzo57

unread,
Jul 2, 2012, 6:36:08 AM7/2/12
to
SELECT Tab1.Numero_Doc, Tab1.Data_doc, Tab1.Importo_f
FROM Tab1 LEFT JOIN Tab2 ON Tab1.Numero_Doc = Tab2.Numero_Doc
WHERE (((Tab2.Numero_Doc) Is Null));

In questo modo mi trova le differenze solo di Numero_doc ma non degli
altri due campi
Lorenzo

lorenzo57

unread,
Jul 2, 2012, 6:42:04 AM7/2/12
to
Forse ho risolto. Ho collegato il JOIN anche tra Data_doc e Importo_f.
SELECT Tab1.Numero_Doc, Tab1.Data_doc, Tab1.Importo_f
FROM Tab1 LEFT JOIN Tab2 ON (Tab1.Importo_f = Tab2.Importo) AND
(Tab1.Data_doc = Tab2.Data_doc) AND (Tab1.Numero_Doc =
Tab2.Numero_Doc)
WHERE (((Tab2.Numero_Doc) Is Null));
0 new messages