Funzione replace in dataTable

lunedì 16 giugno 2008 - 09.57

chim Profilo | Newbie

Ciao a tutti,
sto utilizzando c# per ottenere dati da un db (access), li inserisco in un dataAdapter,
li 'fillo' ad una data table per farne una origine dati di un datagridview.

In access, in fase di inserimento, ho replicato tutti gli apici,
adesso in lettura avrei necessita' di svolgere l'attivita' inversa, ho provato tramite la funzione 'replace' direttamente da query sql,
su access funziona, da codice invece mi restiuisce errore quando eseguo il fill (dataadapter.fill(datatable)):

Funzione replace non definita nell'espressione.

Non so se ho esposto chiaramente il mio problema, se serve posso postare del codice di esempio.

Ciao e grazie

rossimarko Profilo | Guru

Ciao, puoi girarci il pezzo di codice che ti da errore?

-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

chim Profilo | Newbie

Ciao, in realta' ho capito il mio errore, inizioalmente volevo effettuare il replace di un apice direttamente da sql (su access funziona, perche' sfrutta il vba), da codice no, oledb e jet 4.0 non supportano il replace in una query sql.
Sto tendanto allora di farlo da codice, senza usare datareader, provando a cercare e replicare il carattere da sostituore direttamente nella datatable, ho fatto questo, ma non mi funziona ancora...

if (dataTable.Rows.Count > 0) { string apostrofo = string.Empty; for (int i = 0; i < dataTable.Rows.Count; i++) { apostrofo = dataTable.Rows[i]["campo1"].ToString(); if (apostrofo.Contains("~")) { apostrofo = apostrofo.Replace("~", "'"); } } dataTable.AcceptChanges(); }

ps scusate, ho creato 3 post, durante la creazione mi dava errore ... chiedo a chi puo' di eliminare i post di troppo

rossimarko Profilo | Guru

>
> if (dataTable.Rows.Count > 0)
> {
> string apostrofo = string.Empty;
>
>for (int i = 0; i < dataTable.Rows.Count; i++)
> {
>apostrofo = dataTable.Rows[i]["campo1"].ToString();
> if (apostrofo.Contains("~"))
> {
>apostrofo = apostrofo.Replace("~", "'");
>
> }
> }
> dataTable.AcceptChanges();
> }

Ciao,
non ti funziona perchè non riassegni alla colonna il valore:
dataTable.Rows[i]["campo1"] = apostrofo
oppure ancora meglio: dataTable.Rows[i]["campo1"] = apostrofo.Replace("~", "'");

Solo un consiglio, occhio alla pesantezza del ciclo, nel senso che se i record sono tanti rischi di rallentare l'operazione. Non conosco il contesto in cui stai facendo questa operazione quindi non riesco a valutare se è trascurabile o meno.
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

chim Profilo | Newbie

Ti ringrazio per la risposta

In effetti dal debug vedevo che trovava il carattere da sostituire, e faceva il replace, non capivo come mai non me lo visualizzasse ... dovevo digli di farlo!!!

Il ciclo, seppur impegnativo, dovrebbe andarmi bene, si parla di una tabella con poche righe, penso possa arrivare al massimo a un centinaio.

Grazie ancora, a presto, ciao
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