Update-delete su più tabelle, con precisazione

mercoledì 20 giugno 2007 - 11.33

_J_ Profilo | Senior Member

ciao ragazzi,
mi potete dare un suggerimento su come gestire update e delete mediante i comandi edit e delete di un gridview che mi mostra campi però da più tabelle ?

ho due tabelle: 'città' e 'stato_appartenenza', opportunamente correlate da una foreign key sulla tabella 'città'
ho poi una gridview che mi mostra quindi le città col relativo stato cui appartengono, e fin qui tutto ok...
ma il problema non è la select, ma quando imposto il datasource affinchè possa modificare/cancellare dei record, e cioè quando scrivo le query di update/delete...

con le update mi succede che poi, provando la modifica dei record a runtime, mi vengono cancellati invece tutti i dati della tabella 'città', oppure che il record su cui provo mi viene duplicato cancellando così gli altri record... ma la cosa strana è che il database risulta in ogni caso 'vuoto' (la verifica la faccio con gridview1.emptydatatext="vuoto" che mi scrive 'vuoto' se il db è vuoto)

qualcuno mi potrebbe spiegare come funziona la update in questo caso? trovo decisamente irritante riscrivere ogni volta i dati nella tabella e poi vedermeli cancellare
Grazie

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

_J_ Profilo | Senior Member

ragazzi, sono riuscito a fargli accettare la sintassi per l'update ma a runtime, quando clicco su 'aggiorna' nel gridview non mi effettua nessun aggiornamento!!!
AIUTO!

_J_sull'orlo_di_una_crisi_di_nervi
"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

_J_ Profilo | Senior Member

Ciao a tutti.
Per maggior chiarezza vi posto il codice che mi crea disagio
Uso un gridview per mostrare un comune estero ( reperito da una 'tabella_comuni_est') e il relativo stato a cui appartiene (reperito da una 'tabella_stati_est'), ma la query la scrivo solo per la tabella dei comuni visto che poi il gridview si dovrebbe aggiornare di conseguenza...
La query di update è questa:

UPDATE tabella_comuni_est

SET
nome_comune_est = @nome_comune_est,
cap_comune_est=@cap_comune_est, cod_stato_est_appartenenza=@cod_stato_est_appartenenza

WHERE
cod_comune_est=@original_cod_comune_est //chiave primaria,non settata come identity
and
nome_comune_est = @original_nome_comune_est
and
cap_comune_est = @original_cap_comune_est
and
cod_stato_est_appartenenza = @original_cod_stato_est_appartenenza

Ma tutto ciò che ottengo è una duplicazione del record che modifico in tutto il gridview, eccetto la chiave primaria che non è modificabile e che quindi rimane univoca per tutti i record (che ricordo sono tutti uguali)...
come posso fare per risolvere questo problema?

_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

_J_ Profilo | Senior Member

Ho corretto alcune cose e adesso all'atto dell'update non mi duplica i record ma non esegue l'aggiornamento malgrado la conferma che gli do.
la query è sempre

UPDATE tabella_decod_comuni_est
SET
nome_comune_est = @nome_comune_est, cap_comune_est=@cap_comune_est, cod_stato_est_appartenenza=@cod_stato_est_appartenenza
WHERE
cod_comune_est=@original_cod_comune_est
and
nome_comune_est = @original_nome_comune_est
and
cap_comune_est = @original_cap_comune_est
and
cod_stato_est_appartenenza = @original_cod_stato_est_appartenenza

_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."

_J_ Profilo | Senior Member

Tutto risolto!
C'era un errore nei parametri che davo alla query.... cmq ecco la query corretta (potrebbe servire la struttura):

UPDATE tabella_decod_comuni_est
SET nome_comune_est = @nome_comune_est, cap_comune_est=@cap_comune_est, cod_stato_est_appartenenza=@cod_stato_est_appartenenza
WHERE cod_comune_est=@cod_comune_est //chiave primaria senza '_original'

_J_

"Chi fa domande rischia di sembrare stupido,
chi non ne fa rischia di restare stupido..."

"Conosco me stesso? No, non parlo con gli estranei..."
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