Relazione tra due tabelle

di il
11 risposte

Relazione tra due tabelle

Public Class Relazioni
   Private Sub Relazioni_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       ' Carico i dati nelle tabelle
       Me.OrdiniTableAdapter.Fill(Me.TestDataSet.Ordini)
       Me.ClientiTableAdapter.Fill(Me.TestDataSet.Clienti)
       
       ' Creo la relazione tra le tabelle
       Dim relazione As New DataRelation("ClientiOrdini", TestDataSet.Tables("Clienti").Columns("ClienteID"), TestDataSet.Tables("Ordini").Columns("ClienteID"))
       TestDataSet.Relations.Add(relazione)
       
       ' Pulisco i DataBindings
       TextBoxClienteID.DataBindings.Clear()
       TextBoxNome.DataBindings.Clear()
       TextBoxOrdineID.DataBindings.Clear()
       TextBoxDataOrdine.DataBindings.Clear()
       
       ' Associo i BindingSource ai controlli del form
       TextBoxClienteID.DataBindings.Add("Text", BSclienti, "ClienteID")
       TextBoxNome.DataBindings.Add("Text", BSclienti, "Nome")
       TextBoxOrdineID.DataBindings.Add("Text", BSordini, "clienteID")
       TextBoxDataOrdine.DataBindings.Add("Text", BSordini, "DataOrdine")
       
       ' Imposto la relazione tra i BindingSource
       BSordini.DataSource = BSclienti
       BSordini.DataMember = "ClientiOrdini"
       
       ' Associo il BindingNavigator al BindingS.
       BindingNavigator2.BindingSource = BSordini
   End Sub
End Class

Questo codice mi restituisce sempre il seguente errore (ogni verifica l'ho effettuata ripetutamente) :

Se lo stesso codice lo uso con due datatables , nessun errore si manifesta e la relazione funziona perfettamente!

Grazie a chiunque mi aiuti a risolvere il problema.

11 Risposte

  • Re: Relazione tra due tabelle

    Prova a commentare questa:

    TextBoxDataOrdine.DataBindings.Add("Text", BSordini, "DataOrdine")

    Da errore?

    Di solito le date richiedono maggiore attenzione.

    Controlla tutto ciò che riguarda dataordine.

  • Re: Relazione tra due tabelle

    07/09/2024 - sihsandrea ha scritto:


    Prova a commentare questa:

    TextBoxDataOrdine.DataBindings.Add("Text", BSordini, "DataOrdine")

    Da errore?

    Di solito le date richiedono maggiore attenzione.

    Controlla tutto ciò che riguarda dataordine.

    sihsandrea.grazie anzitutto per il tuo intervento.

    Ho provato a sostituire text con value, ma il risultato è che non è impossibile stabilire una connessione con “value”.

    Le sto provando tutte, ma….

  • Re: Relazione tra due tabelle

    Si, ok, Prova ad eliminare quella riga di codice.

    Se non da problemi allora ad essere incriminato potrebbe essere il campo, il controllo, il tipo di dato… intanto vedi se eliminando quella.riga non da errori.

  • Re: Relazione tra due tabelle

    Sihsandrea, scusa se rispondo in ritardo. Il problema mi sta assillando e non ho pensato a tenere sotto controllo i posts.

    Rispondo affermativamente alla tua proposta di eliminare il campo DataOrdine.

    La relazione funziona perfettamnete. Infatti, l'IDOrdine cambia quando seleziono un diverso cliente.

    Ho provato allora a cambiare il campo :l'ho chiamato Merce ,di tipo text.

    Stesso errore: Impossibile stabilire l'associazione alla colonna merce!

    Ho fatto però altri tentativi : 

    Ho sostituito le text con due datagrid lasciando inalterato il codice relativo ai bindingsource e bindingnavitator : la relazione funziona perfettamente.

    Ho provato allora a inserire nella tabella Cliente un campo con il nome DataOrdine (lo stesso degli ordini, lo stesso che produce l'errore) : la relazione funziona perfettamente!

    Ho provato a mettere in relazione le due tabelle usando il wizard della finestre di progettazione : la relazione funziona perfettamente.

    Solo quando si scrive del codice per stabilire e sfruttare una relazione, si verificano degli errori. 

    Sono tentato dal mollare, ma sono curioso, voglio capire. Grazie per qualsiasi suggerimento che vorrai darmi.

  • Re: Relazione tra due tabelle

    08/09/2024 - Jan ha scritto:


    Ho provato allora a inserire nella tabella Cliente un campo con il nome DataOrdine (lo stesso degli ordini, lo stesso che produce l'errore) : la relazione funziona perfettamente!

    Quindi devi controllare il campo data della tabella orini. Controlla o sostituisci ex novo anche il controllo magari si riporta un errore avuto in fase di creazione.

  • Re: Relazione tra due tabelle

    09/09/2024 - sihsandrea ha scritto:


    08/09/2024 - Jan ha scritto:


    Ho provato allora a inserire nella tabella Cliente un campo con il nome DataOrdine (lo stesso degli ordini, lo stesso che produce l'errore) : la relazione funziona perfettamente!

    Quindi devi controllare il campo data della tabella orini. Controlla o sostituisci ex novo anche il controllo magari si riporta un errore avuto in fase di creazione.

    Ho fatto di più. Ho cancellato e riscritto il form. Non è cambiato nulla! 

    Come ho scritto sopra (Ho provato a mettere in relazione le due tabelle usando il wizard della finestre di progettazione : la relazione funziona perfettamente.), ho esaminato il codice prodotto da VS : non ho trovato differenze sostanziali.

  • Re: Relazione tra due tabelle

    Su WeTransfer ho scaricato le mie prove.

    Questo il link per scaricare la cartella e ….cercare l'errore su MyRelazione3: https://we.tl/t-mk1efYxTSt.

    Grazie.

  • Re: Relazione tra due tabelle

    Errore nome parametro datamenber

    Controlla

    BSordini.DataMember = “ClientiOrdini”

    Confronta il tuo codice col wiz… 

  • Re: Relazione tra due tabelle

    RISOLTO!

    Ti sarò sempre grato per l'aiuto che mi hai fornito, sihsandrea.

    Dopo aver effettuato,dopo il tuo sollecito ,l'ennesima verifica, ha riflettuto ed ho modificato il codice come segue (dopo aver settato a “nessuno” il databinding da proprietà delle textbox IdCliente e merce) :

            ' Carica i dati nelle tabelle
           Me.OrdiniTableAdapter.Fill(Me.TestDataSet.Ordini)
           Me.ClientiTableAdapter.Fill(Me.TestDataSet.Clienti)
           
           ' Crea la relazione tra le tabelle
           Dim relazione As New DataRelation("ClientiOrdini", TestDataSet.Tables("Clienti").Columns("ClienteID"), TestDataSet.Tables("Ordini").Columns("ClienteID"))
           TestDataSet.Relations.Add(relazione)
           
           ' Imposta la relazione tra i BindingSource
           BSordini.DataSource = BSclienti
           BSordini.DataMember = "ClientiOrdini"
           
           TextBoxOrdineID.DataBindings.Clear()
           Merce.DataBindings.Clear()
    
           TextBoxOrdineID.DataBindings.Add("Text", BSordini, "ClienteID")
           Merce.DataBindings.Add("Text", BSordini, "Merce")
           
           ' Associa il BindingNavigator al BindingS.
           BindingNavigator2.BindingSource = BSordini.
           
           Ora funziona come previsto!!! Grazie!! 
  • Re: Relazione tra due tabelle

    Grandioso!

  • Re: Relazione tra due tabelle

    Puoi usare il filtro del BindingSource

    Due tabelle in relazione

    FatturepagateT e FatturepagateR

    O così

                    FatturepagateRBindingSource.Filter = "Codice= '" & CodiceTextBox.Text & "'"
    

    o se ti da errore

             On Error Resume Next
            FatturepagateRBindingSource.Filter = "Codice= '" & CodiceTextBox.Text & "'"
    
    
Devi accedere o registrarti per scrivere nel forum
11 risposte