Relazioni tra tabelle con valori null in SQL Server 2005

lunedì 21 luglio 2008 - 22.39

danpres Profilo | Newbie

Salve a tutti,

non riesco a capire se sbaglio qualcosa io, oppure non le chiavi esterne di relazione non fanno al caso mio.

Situazione:
Ho due tabelle "Articoli" e "CategorieArticoli". Nella tabella Articoli, vi è il campo "CodCategoria" e la chiave esterna "FK_Articoli_CategorieArticoli".

Problema:
Il campo CodCategoria non è obbligatorio, e se un utente ci scrive qualcosa, ma poi lo lascia vuoto, il suo valore non è più "null" ma "" (stringa vuota appunto).
In questo modo, la relazione alla tabella categorie, non mi consente di salvare il record, perchè nella tabella categorie è necessario un record con il codice categoria vuoto.

a cosa servono le relazioni se poi i valori null mi creano questi problemi?
dove sbaglio ?

amelix Profilo | Expert

Il problema è che il valore NULL (nessun valore) è diverso da stringa vuota...
Devi filtrare prima di fare l'insert/update il valore stringa vuota e trasformarlo in null...

L'integrità referenziale ti evita di scrivere delle cose errate nel database (valore stringa vuota al posto di null...)

Andrea - http://www.MelisWeb.eu/
CMS - http://www.WebOrama.it/

danpres Profilo | Newbie

l'avevo capito, infatti cercavo qualche soluzione...

ma come si fa? io vorrei utilizzare il databinding dei textbox classico, quello automatico per intenderci.

Mica si può assegnare ad un textbox il valore Null quando è vuoto, vero ??

tarabasch84 Profilo | Junior Member

Ciao,
puoi fare in due modi:
1) Elimina l'integrità referenziale e lascia che nel campo CodCategoria venga memorizzata la stringa vuota;
2) Mantieni l'integrità referenziale passando al campo CodCategoria il valore NULL (il campo deve accettare valori NULL);

In che modo l'hai implementato il caricamento dei dati da database da associare ai controlli?

danpres Profilo | Newbie

i controlli sono associati con il databinding classico, utilizzando i dataset e facendo un FILL del datatable interessato.
sto facendo delle prove ancora, non è detto che questa versione sia confermata, ma qualsiasi soluzione scelgo, sono sicuro che dovrò fare in modo di scrivere meno codice possibile.
Visual Studio .Net pur conoscendolo solo al 50%, mi pare sia molto più prolisso nello scrivere codice rispetto a Visual FoxPro (purtroppo).

ma si può assegnare il valore NULL al textbox ?

tarabasch84 Profilo | Junior Member

Beh, io personalmente non utilizzo le procedure guidate per associazione dati. Però ti posso dire che il controllo TextBox (la proprietà Text) può accettare sono valori di tipo stringa. Se non avessi utilizzato la procedura guidata avresti risolto facendo un controllo sul valore NULL.
Ciao
--
Credo che parte della colpa sia di billy...
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5