Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
RICORSIONE
giovedì 25 gennaio 2007 - 15.43
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
corkie 12
Profilo
| Newbie
46
messaggi | Data Invio:
gio 25 gen 2007 - 15:43
Buon giorno a tutti....avrei bisogno di un'aiuto riguardo la ricorsione...
io ho una tabella sql contenente IdUtenti e Idamici messi in questo modo
idutente idamico
1 2
3 4
6 8
2 3
il mio obbiettivo è quello dati due id inseriti in due textbox di sapere se gli id messi a confronto sono amici diretti (es. come 1 e 2 ) o se sono amici nn diretti come (es. 1 è amico di 2, 2 è amico di tre, risultato 1 è amico di 2 che è amico di 3)....come potrei grazie ad un metodo ricorsivo risalire a tutti i possibili collegamenti dati due id????
è un pò difficile ma sicuramente ci sarà qualcuno in grado di aiutarmi????? spero.....grazie anticipatamente...
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
gio 25 gen 2007 - 23:04
Prova l'articolo sul mio blog.
Un esempio di utilizzo coordinato di ListView e TreeView e metodi ricorsivi con VB.NET
http://community.visual-basic.it/lucianob/articles/17106.aspx
corkie 12
Profilo
| Newbie
46
messaggi | Data Invio:
ven 26 gen 2007 - 11:36
il tuo esempio non mi è molto chiaro...(considera la mia ignoranza) ora mi spiego meglio....
ipotesi io metto in input 1 e 3
lui mi deve tornare con risultato
che 1 è amico di 2
2 è amico di tre
capisci che se fosse una tabella da 5000 elementi il risulato sarebbe tutte le coppie che mi portano dall'idutente all'idamico inseriti....
tipo
1 2
3 5
2 4
4 7
8 10
6 3
7 9
se metto in input 1 e 9 il risultato sarà
1 è amico di 2
2 è amico di 4
4 è amico di 7
7 è amico di 9
in somma tutto il percorso (sempre che esista) dall'idutente all'idamico immessi in input.......grazie!!!!
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
ven 26 gen 2007 - 11:40
Purtroppo non ho tempo per sviluppare un esempio sui tuoi dati che puoi incorporare immediatamente nel tuo sviluppo, devi quindi sforzarti di capire il mio esempio ed applicarlo alla tua situazione.
Prova a ricostruire l'esempio e verifica "cosa fa" durante la funzione ricorsiva.
corkie 12
Profilo
| Newbie
46
messaggi | Data Invio:
ven 26 gen 2007 - 11:43
ora ci provo .....
corkie 12
Profilo
| Newbie
46
messaggi | Data Invio:
ven 26 gen 2007 - 12:19
il problema è che non capisco come integrare i miei dati che sono una tabella sql 2000
il tuo esempio li genera all'interno del codice io dovrei semplicemente passare la mia tabella al programma.....sono due colonne una idutente e idamico....se solo riuscissi ad utilizzare i miei dati con quelle strutture sarei l'uomo più felice dell mondo.... se prorio non riesci adesso non è un prolema cè tutto il week end , ma ti giuro che se riesco ad integrare i miei dati nel to esempio sono l'uomo più felice del mondo.....
La mia ignoranza nn mi permette di comprendere come dargli i miei dati da elaborare...
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
ven 26 gen 2007 - 13:47
Ma la ricorsione la vuoi fare "lato sql" o lato client (tuo programma?).
Nel primo caso a mio aviso dovresti fare una stored procedure (e hai sbagliato forum).
Nel secondo caso il mio esempio funziona se hai pochi dati, se ne hai molti invece devi fare un ciclo che prenda i dati di ogni livello dal database.
Esempio in c# di popolamento di una treeview con metodo ricorsivo partendo da sql server:
private void PopolaTableDistinta(string padre, TreeNode nodoPadre)
{
SqlDataReader dr;
DataRow[] drw = dsTabe.Tables["DistintaBase"].Select("codpro = '" + padre + "'");
if (drw.Length == 0)
{
cmdSelect.Parameters["@Codpro"].Value = padre;
dr = cmdSelect.ExecuteReader();
object[] row = new object[dsTabe.Tables["DistintaBase"].Columns.Count];
while (dr.Read())
{
dr.GetValues(row);
dsTabe.Tables["DistintaBase"].Rows.Add(row);
}
dr.Close();
dsTabe.Tables["DistintaBase"].AcceptChanges();
drw = dsTabe.Tables["DistintaBase"].Select("codpro = '" + padre + "'");
}
foreach (DataRow row in drw)
{
string figlio = row["figlio"].ToString();
TreeNode nodo = new TreeNode();
nodo.Text = FormattaTextTreeNode(figlio) + row["Descrizione"].ToString();
nodo.Tag = figlio;
PopolaTableDistinta(figlio, nodo);
nodoPadre.Nodes.Add(nodo);
}
}
Torna su
Stanze Forum
Elenco Threads
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 !