Problema: Come posso fare per sostituire una stringa con un'altra in un campo di tipo Text o nText?
Considerazioni: Se il campo fosse di tipo varchar o nvarchar il problema non si porrebbe, in quanto esiste in SqlServer una funzione (più in generale esiste in T-Sql) che lo fa in modo nativo: la funzione "Replace". Funzione che, però, non lavora sui campi text. Bisogna utilizzare un'altra funzione, che però ha un utilizzo più generico: UpdateText
Soluzione:
declare @TestoVecchio varchar(1000)
set @TestoVecchio = 'Vecchio'
declare curs cursor local fast_forward
for
select
idriga,
textptr(Colonna),
charindex(@TestoVecchio, Colonna)-1
from
Tabella
where
Colonna
like
'%' + @TestoVecchio +'%'
declare @Testonuovo varchar(1000)
set @Testonuovo = 'nuovo'
declare @txtlen int
set @txtlen = len(@TestoVecchio)
declare @ptr binary(16)
declare @pos int
declare @id int
open curs
fetch next from curs into @id, @ptr, @pos
while @@fetch_status = 0
begin
updatetext Tabella.Colonna @ptr @pos @txtlen @Testonuovo
fetch next from curs into @id, @ptr, @pos
end
close curs
deallocate curs
Note:
Tabella è la tabella di riferimento
Colonna è il campo in cui si deve modificare il testo
idriga è l'id della tabella (in questo caso è di tipo int, quindi la variabile @id è impostata come int, se fosse di tipo diverso basta cambiare la dichiarazione della variabile @id nel tipo corretto)
venerdì 20 giugno 2008
martedì 10 giugno 2008
Stringhe di connessione a Database per Web.Config
Database Access
<connectionstrings>
<add name="AccessConnectionString"
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=|DataDirectory|nomedb.mdb"
providerName="System.Data.OleDb" />
</connectionstrings>
Database ODBC
<connectionstrings>
<add name="ODBCConnectionString"
connectionString="DSN=nomedsn;Uid=sa;Pwd=pwd;
providerName="System.Data.Odbc” />
</connectionstrings>
Database SQLServer
<connectionstrings>
<add name="OLEDBConnectionString"
connectionString="Server=nomeserver;Integrated Security=SSPI;Database=nomedb;"
providerName="System.Data.SqlClient" />
</connectionstrings>
Connessione ad Excel
<connectionstrings>
<add name="OLEDBConnectionString"
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source= nomefile.xls; Extended Properties=Excel 8.0;"; />
</connectionstrings>
Connessione a file .csv
<connectionstrings>
<add name="OLEDBConnectionString"
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=nomefile.csv;
ExtendedProperties=""Text;HDR=Yes;FMT=Delimited""";/>
</connectionstrings>
Inoltre si possono utilizzare le connessioni native verso Oracle.
<connectionstrings>
<add name="AccessConnectionString"
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=|DataDirectory|nomedb.mdb"
providerName="System.Data.OleDb" />
</connectionstrings>
Database ODBC
<connectionstrings>
<add name="ODBCConnectionString"
connectionString="DSN=nomedsn;Uid=sa;Pwd=pwd;
providerName="System.Data.Odbc” />
</connectionstrings>
Database SQLServer
<connectionstrings>
<add name="OLEDBConnectionString"
connectionString="Server=nomeserver;Integrated Security=SSPI;Database=nomedb;"
providerName="System.Data.SqlClient" />
</connectionstrings>
Connessione ad Excel
<connectionstrings>
<add name="OLEDBConnectionString"
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source= nomefile.xls; Extended Properties=Excel 8.0;"; />
</connectionstrings>
Connessione a file .csv
<connectionstrings>
<add name="OLEDBConnectionString"
connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=nomefile.csv;
ExtendedProperties=""Text;HDR=Yes;FMT=Delimited""";/>
</connectionstrings>
Inoltre si possono utilizzare le connessioni native verso Oracle.
mercoledì 4 giugno 2008
Ajax - Response.Write in un UpdatePanel
Normalmente l’uso del Response.Write() in un UpdatePanel non è consentito.
Per ovviare a questo problema, uno stratagemma è quello di inserire un LinkButton esterno all’UpdatePanel e associare a questo controllo il postback generato dall’oggetto interno al pannello.
HTML
<asp:UpdatePanel ID="upd" runat="server">
…
<asp:Button runat="server" ID="BOTTONE" Text="Clicca" />
…
</asp:UpdatePanel>
<asp:LinkButton ID="ALinkButton" runat="server"></asp:LinkButton>
CODICE
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
…
AddHandler Me.ALinkButton.Click, AddressOf FUNZIONE
Me.BOTTONE.Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(Me.ALinkButton, ""))
If Not Page.IsPostBack Then
…
End If
…
End Sub
Protected Sub FUNZIONE(ByVal sender As Object, ByVal e As System.EventArgs)
…
Response.Write("Testo")
…
End Sub
Per ovviare a questo problema, uno stratagemma è quello di inserire un LinkButton esterno all’UpdatePanel e associare a questo controllo il postback generato dall’oggetto interno al pannello.
HTML
<asp:UpdatePanel ID="upd" runat="server">
…
<asp:Button runat="server" ID="BOTTONE" Text="Clicca" />
…
</asp:UpdatePanel>
<asp:LinkButton ID="ALinkButton" runat="server"></asp:LinkButton>
CODICE
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
…
AddHandler Me.ALinkButton.Click, AddressOf FUNZIONE
Me.BOTTONE.Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(Me.ALinkButton, ""))
If Not Page.IsPostBack Then
…
End If
…
End Sub
Protected Sub FUNZIONE(ByVal sender As Object, ByVal e As System.EventArgs)
…
Response.Write("Testo")
…
End Sub
Iscriviti a:
Post (Atom)