PDA

View Full Version : [visual basic .net] Passare BindingSource a form figli


garlix
15-08-2010, 16:16
Salve a tutti e buon ferragosto.
Dopo mesi di fermo ho rimesso mani ad un vecchio progetto in VB .net lasciato incompiuto si tratta di un gestore di clienti. Ad esso è associato un Database SQL Express 2010 anche visual studio è alla versione 2010. Il mio problema è che vorrei avere un form padre e aprire ogni scheda cliente in un form figlio però non saprei proprio dove sbattere la testa.... Qualcuno sa indicarmi la giusta direzione? Darmi qualche suggerimento?:muro:

Grazie in anticipo.

Andrea

MarcoGG
16-08-2010, 12:07
Bah, tutto dipende da come è stata realizzata la Form principale. Se è stata generata con il wizard automatico di VS ( scelta che non consiglio ) dovrebbe essere possibile specificare l'apertura di ogni record ( tipo datagridview... ) su una nuova Form.
In ogni caso, più che BindingSource, puoi sempre prendere un campo significativo e soprattutto univoco ( id, codice_fiscale, ragione_sociale, ecc... ) e passarlo alla query sull'apertura della Form secondaria...
Ma è molto difficile consigliare senza sapere come è stata costruita l'origine dati sulla Form padre.

garlix
17-08-2010, 12:25
Grazie per la celere risposta. Effettivamente l'origine dati sulla Form padre è stata costruita attraverso il Wizard di VS che fai bene a sconsigliare! Proverò con un approccio più manuale... Tu sapresti consigliarmi un approccio "giusto"? Perché il wizard di VS è comodo perché basta fare un Drag&Drop dei campi della tabella sul Form et voilà! Tutte le textbox (perché non volevo usare Datagrid) sono belle che collegate al relativo campo! E visto che ho una tabella con una trentina di campi non vorrei doverli "bindare" tutti manualmente... Cosa mi consiglieresti di fare? :confused: Perché l'unico metodo che mi è venuto in mente è questo:


Dim con As New SqlConnection("Data Source=MioServer\SQLEXPRESS;Initial Catalog=Prova;Integrated Security=True")
Dim da As New SqlDataAdapter("Select * From tblProva", con)
Dim ds As New DataSet()

da.Fill(ds, "tblProva")

IdTextBox.DataBindings.Add("text", ds, "tblProva.id")
NomeTextBox.DataBindings.Add("text", ds, "tblProva.nome")
' ecc......


Grazie ancora.

Andrea

MarcoGG
17-08-2010, 15:36
Perchè mai evitare a tutti i costi di creare una grid ?! Esistono proprio per questo. Se vuoi lavorare con un DataSet, puoi avere un DataGridView principale, e quando l'utente ad esempio fa doppio click su una riga, apri una nuova Form con i dettagli, magari passando l'id ad una nuova query ( campo "id" che puoi includere nella DataGridView principale, ma renderlo nascosto... ).
Oppure se già la grid contiene tutte le informazioni desiderate ( tipo una griglia "clienti" che già contiene tutti i dettagli di ogni cliente, ma per motivi di semplicità ne mostra solo alcuni ) ti basterà caricare nelle text della nuova Form-dettaglio i campi della riga selezionata.

garlix
17-08-2010, 17:47
Grazie ancora per la celere risposta ma la GridView non fa proprio al mio caso purtroppo. Il database infatti non contiene informazioni "semplici" di facile editatura ma informazioni più complesse :( Non è un database clienti con codice fattura, codice articolo ecc. E poi la datagrid è scomoda perché permette uno sviluppo solo "orizzontale" e con molti campi diventa scomodo scorrerla tutta.
Se non ci sono proprio altre soluzioni farò il binding "a mano"...
Se no qualunque suggerimento è ben accetto!

Andrea