SQL come risolvere un conflitto FOREIGN KEY

110 views
Skip to first unread message

chiarapr

unread,
Jan 23, 2012, 6:46:49 AM1/23/12
to Foxpro Italia
Ciao a tutti,
stò importando le tabelle di una procedura scritta in VFP (tabelle
DBF) nella stessa procedura riscritta in SQL. Stò avendo molti
problemi con i vincoli FOREIGN KEY: in pratica molti record hanno i
campi collegati ad altre tabelle vuoti e quando cerco di importare mi
blocca perchè non esiste la chiave corrispondente. Mi sembra di aver
capito che SQL non relaziona le tabelle solo se il campo è NULL ma i
miei campi mi sembrano vuoti ma non NULL...
Poichè le tabelle sono tante vi chiedo come posso fare per aggirare
l'ostacolo?
Grazie

Bruno Maddalozzo

unread,
Jan 23, 2012, 8:46:08 AM1/23/12
to Foxpro Italia
Potresti fare un replace in Fox prima dell'import:
Replace All CampoChiaveEsterna With NULL for Empty(CampoChiaveEsterna)

Oppure creare un record vuoto in SQL, ma questo non mi sembra un buon
modo di fare...
O forse c'è qualche settaggio in SQL che bypassa tutto, ma non lo
conosco.

Ciao.
Bruno Maddalozzo

chiarapr

unread,
Jan 23, 2012, 9:13:47 AM1/23/12
to Foxpro Italia
Innanzitutto grazie per il tuo intervento.
Avevo già provato a fare il replace prima di importare ma mi risponde:

" Expression must be of type C, M or V"

non accetta il valore .NULL. ....

Sbaglio qualcosa o c'è qualche altro modo?

Ciao
> > Grazie- Nascondi testo citato
>
> - Mostra testo citato -

Bruno Maddalozzo

unread,
Jan 24, 2012, 1:22:16 AM1/24/12
to Foxpro Italia
E' perché nella definizione della tabella non hai flaggato la check
Null.
Allora prima devi fare un modify structure della tabella e inserire il
flag.

Ciao.
Bruno Maddalozzo
> > - Mostra testo citato -- Nascondi testo citato

chiarapr

unread,
Jan 24, 2012, 7:35:53 AM1/24/12
to Foxpro Italia
L'ho fatto ma non è cambiato nulla: stesso messaggio di errore!

Possibile che non si riesce a fargli accettare i valori NULL?

Ciao

Bruno Maddalozzo

unread,
Jan 26, 2012, 1:40:50 AM1/26/12
to Foxpro Italia
Ho fatto una prova e riesco a fare i Replace con NULL.
Se non ce la fai con le tue tabelle è probabilmente perché quei campi
sono appunto chiavi di relazione.
Probabilmente funziona il sistema di creare una nuova tabella
es. Fatture_Righe_Copia identica a Fatture_Righe ma senza relazioni
impostate
e quindi accodare: Append From Fatture_Righe ed eliminare i NULL con i
replace.
Poi importare in SQL da Fatture_Righe_Copia.

Ciao.
Bruno Maddalozzo

chiarapr

unread,
Jan 26, 2012, 4:43:16 PM1/26/12
to Foxpro Italia
Pero' forse mi conviene togliere le relazioni in SQL, importare e poi
ripristinarle.
Pensavo più a qualcosa tipo un settaggio in SQL che gli consentisse di
accettare i campi vuoti senza verificare la relazione. Una forzatura
insomma....
Grazie per le prove che hai fatto e per il tempo pero per me.
Ciao
Reply all
Reply to author
Forward
0 new messages