Confronto tra dataset

giovedì 24 novembre 2005 - 16.17

Jumpa Profilo | Junior Member

Ciao a tutti, mi son trovato davanti ad un problemino diciamo di pigrizia,

ho due dataset simili, li voglio mettere a confronto evidenziando le differenze, ovvero quali sono le tabelle mancanti in uno o nell'altro e quando le tabelle corrispondono quali sono le righe delle tabelle stesse che differiscono.

Dicevo un problema di pigrizia, peche volevo sapere se esiste gia qualche bel metodo che fa tutto cio, magari mettendo il risultato in un terzo dataset, altrimenti vabbe rimbocchiamoci le manichine e me la scrivo da me!


Grazie a tutti in anticipo!

Jumpa

totti240282 Profilo | Guru

a me hanno consigliato sql compare però a pagamento.

C'è solo un capitano !!!!!!

Jumpa Profilo | Junior Member

>a me hanno consigliato sql compare però a pagamento.
>
>C'è solo un capitano !!!!!!

per 300 dollari la pigrizia me la faccio passa!!!

-------------------------
Follow the White Rabbit...

http://www.jumpa.org
-------------------------

Cteniza Profilo | Guru

In effetti molto banalmente potresti farti un ciclo sui due database utilizzando il metodo getoledbschematable:
Esempio:
Dim dtTable As DataTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, _
New Object() {Nothing, Nothing, Nothing, Nothing})

Questo ti restituisce una datatable con i riferimenti di tutti i campi di tutte le tabelle.
Con {Nothing, Nothing, "mytable", Nothing} estrae solo la tabella myTable

Per i dati successivamente credo sia necessario costruire delle query mirate .
Puoi estrarre i singoli dati ordinati e confrontarli nelle due tabelle (una di un database rispetto alla stessa dell'altro).
E' un bell'esercizio.
Se costa solo 300 dollari e lo devi vendere a qualcuno ti consiglio di prendere una cosa già fatta.

Se fosse una cosa mia, verifica della struttura delle tabelle a parte (che credo sia buona cosa realizzare come software "di base"), il resto se "non retribuito" non lo farei proprio.

Non conosco quel software che fa il confronto ma sono pronto a scommettere che in alcuni casi dà risultati errati o non voluti oppure controlla anche cose che non interessano e le segnala come "variate".

Jumpa Profilo | Junior Member

oggi pomerigio mi è venuta una folgorazione.....
non so quant è valida ma mi è piaciuta l'idea... forse perche è la mia ;-))

mi costruisco due funzioncine piuttosto stupide del tipo ( le scrio in modo brutale )

funtion compareDataSet (dsa as dataset, dsb as dataset ) as dataset
dim ds as new dataset
dim t sa datatable
for each t in dsa.datatables
' verifico se t è contenuta in dsb
se t non è connuta in dsb allora la aggiungo in ds
next
end function

chiamando chiesta due funzione due volte invertendo gli argomenti ho come risultato due dataset che contengono cio che manca prima in dsb e poi in dsa

Partendo dall'assunto che se le tabelle esistono allora hanno la stessa struttura
scrivo una cosa analoga anche per il confronto delle righe nei datatables

quindi alla fine della fiera ottengo due dataset ciascuno conteneti cio che manca in a ed in b
faccio un bel merge ( se non sbaglio metodo esistente della classe dataset ) ... ed il gioco è fatto!


che en dite ? un po troppo empirica???





-------------------------
Follow the White Rabbit...

http://www.jumpa.org
-------------------------

atsinformatica Profilo | Newbie

Jumpa,
sicuramente avrai già risolto (sono passati 5 anni) dall'apertura del post... comunque potresti utilizzare (o avresti potuto utilizzare a questo punto) quanto illustrato nel seguente link: http://msdn.microsoft.com/it-it/library/bb386998.aspx

Non è una presa in giro credimi, è che sto affrontando lo stesso problema: confronto tra dataset/datarow.

Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5