17 messaggi dal 08 aprile 2005
sto veramente impazzendo....

se avete letto qualche post che ho fatto non sarà per voi una sorpresa il fatto che sono un neofita di .net !! Ma ora ci sto facendo la tesi, quindi è ora di imparare bene. Sto leggendo migliaia di cose e mentre alcuni aspetti sono chiarissimi altri lo sono un po' meno.... in particolare questa che vi chiedo.

Situazione:

Quello che ho fatto:

Un programma c# legge dei dati da un dispositivo seriale e li scrive su un database.
Questo programma verrà usato in copia identica su più computer, ognuno dei quali ha un db locale.
Ogni tanto, questi programmi fanno un'interrogazione al db locale e mandano i dati più recenti via web service ad un unico punto centrale.

Sul punto centrale (web service che gira su IIS), c'è un db identico a quello dei punti periferici (dove girano i programmi c# detti prima).
Il punto centrale riceve il dataset spedito dal client.

Il problema:
Nel punto centrale arriva correttamente il dataset spedito da un client. VORREI AGGIUNGERE I DATI DI QUESTO DATASET AI DATI GIA' PRESENTI SU QUESTO DB GLOBALE.

per verificare alcune cose il webservice genera l'xml del dataset che gli arriva, l'xml del dataset rappresentante i dati che al momento si trovano sul db centrale e l'xml del dataset risultante dall'unione dei due dataset. Quando ha finito invia al client questi xml.

Al client ricevo l'xml del dataset che il server ha ricevuto (e vedo che il ds arriva correttamente) e ricevo anche l'xml dell'unione dei due dataset, quindi sul webservice arrivo ad avere il dataset che vorrei, solo che non riesco a scrivere effettivamente questo nuovo dataset sul db.
Questo lo verifico perchè sul webservice, oltre al file service.asmx e service.cs (che fanno queste cose) c'è un semplice grid.aspx che legge i dati del db. Se aggiorno questa pagina vedo che il cambiamento non c'è stato...


Il codice che ho scritto su service.cs

[WebMethod(Description = "Prende un dataset in ingresso")]
public string PrendiAggiornamento(DataSet DS)
{
//su msg costruisco la stringa che sarà la rappresentazione xml dei dataset (lo so dovrei usare StringBuilder!)
string msg;

//metto su msg l'xml del dataset che mi è arrivato dal client
msg="DS=\n"+DS.GetXml().ToString()+"\n";

try
{
SqlConnection globalCon = new SqlConnection("LA MIA STRINGA DI CONNESSIONE);

SqlDataAdapter DA = new SqlDataAdapter("SELECT * FROM Passaggi", globalCon);

//chiamo globalDataset il dataset che sta sul webservice e che alla fine dovrà contenere i dati che ha + i dati di DS arrivato dal client
DataSet globalDataset = new DataSet();

DA.Fill(globalDataset);

// metto su msg l'xml di come è il dataset globalDataset prima della modifica
msg+="\nGlobal all'inizio:\n" + globalDataset.GetXml().ToString() ;


globalDataset.Merge(DS);

//scrivo su msg l'xml di come è il globalDataset dopo la modifica (questo mi arriva al client esattamente come vorrei, cioè con i dati risultanti dalla somma dei due dataset)
msg += "\nGlobal dopo:\n" + globalDataset.GetXml().ToString();

//IL PROBLEMA E' QUI
//NON RIESCO A CAPIRE COME FUNZIONANO AcceptChanges e Update
//LE DUE ISTRUZIONI QUI SOTTO LE HO USATE DA SOLE, INSIEME E INSIEME
//NELL'ORDINE OPPOSTO A COME HOSCRITTO QUI
//IL RISULTATO E' CHE IL DATASET CREATO NON VIENE SCRITTO SUL DB

globalDataset.AcceptChanges();

DA.Update(globalDataset);


}
catch (Exception)
{
return "Errore sul server\n"+msg ;
}

return "OK \n"+msg ;


}


Perchè acceptchanges e update non funzionano? ma soprattutto che differenza c'è tra i due??????

spero di non essermi dilungato troppo e spero che qualcuno mi aiuti!!!!!

grazie
1.509 messaggi dal 27 dicembre 2005
se tu fai acceptschanche prima è normale che il dataset non aggiornarà nulla perche hai contrassegnato tutte le righe come non modificate.

prova a cambiare il tutto cosi....


DA.Update(globalDataset);

globalDataset.AcceptChanges();

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.