Assegnare ID secondario

sabato 22 dicembre 2007 - 11.16

Apple Profilo | Newbie

Ho seguito questo esempio riscrivendolo in VB.NET:

http://www.dotnethell.it/articles/TutorialADONET2.aspx

Funziona tutto eccetto una cosa:
Al momento del salvataggio dei nuovi record, nella tabella Detail, il campo con l'ID secondario non prende il numero dell'ID principale della tabella Master.
Tutte le altre funzioni svolgono il loro compito correttamente.

Avete un idea di come si possa correggere questo?
Ho scritto:


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

In pratica, nella colonna IDFatture di Articoli, dovrebbe apparire il numero attribuito al campo pkIDFatture di Fatture.
La chiave primaria è contatore (duplicati non ammessi), la secondaria Numerico (duplicati ammessi).
Se creo dei record direttamente inella tabella di Access, attribuendo i valori a mano, visualizzo tutto correttemente.

19018 Profilo | Expert

Purtroppo adesso non ho tempo per rivedere con accuratezza l'articolo...ma se non ricordo male non ho mai trattato il caso dell'aggiunta di nuovi record, ma solo di modifica e cancellazione.
E' normale che se cerchi di aggiungere da lì un nuovo record, non ti verrà aggiornato in automatico l'ID della FK. Devi farlo tu a mano, in maniera esplicita!
Access lo fa in automatico ma se intervieni da codice, come in questo caso, sei tu che devi inserire il giusto ID.

Spero di essere stato chiaro!

Buone feste!

ciao
Stefano Passatordi

http://blogs.dotnethell.it/stem/

Apple Profilo | Newbie

Grazie per la risposta, ma ti devo contraddire (o almeno io l'ho interpretato così)...

Parli del salvataggio.
Siccome non fai riferimento al problema dell' ID secondario, ho dato per scontato che tu non lo avessi riscontrato.
Mi sembra impossibile che ADO.NET non riesca a fare una cosa che in ADO era banale.
Se ti venisse in mente un sistema per risolvere il problema, mi faresti una cortesia.

19018 Profilo | Expert

E' normale che la soluzione ci sta ma non è automatica (almeno, per quello che so io!) devi essere tu a recuperare l'ID che ti serve tramite la relazione e poi a inserirlo nel record giusto. Tutto qui, non mi sembra nulla di difficile o di lungo da fare...se trovi un modo "automatico" fammi sapere!

E poi..il salvataggio (come dici tu) può essere inteso in due sensi :

1. modifica di un record esistente (caso dell'articolo)
2. inserimento nuovo record (tuo caso)

dove sta la differenza???
..semplice!
Nel caso dell'articolo la relazione viene instaurata con tutti i dati di interesse già presenti nel DB. E quindi il join viene fatto in automatico.

Nel tuo caso, la relazione esiste già e non è a consoscenza del nuovo record...prova a fare un "refresh" della relazione...magari ti risolve il problema!

ciao

Stefano Passatordi

http://blogs.dotnethell.it/stem/

Apple Profilo | Newbie

Grazie, ci provo.
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