Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
SQL UPDATE SU ORACLE
giovedì 30 luglio 2009 - 14.36
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
gio 30 lug 2009 - 14:36
Ciao a tutti...
riprendo un problema che ho e del quale già se parlò su questo thread...senza però trovare soluzioni:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=17866
In pratica io ho il mio oggetto SQLDatasource associato ad una WebGrid (componente simile alla DataGrid):
<asp:SqlDataSource
ID="XE" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionStringOracle %>"
ProviderName="<%$ ConnectionStrings:ConnectionStringOracle.ProviderName %>"
SelectCommand='SELECT * FROM "CARICO192_168_1_221"'
UpdateCommand="UPDATE CARICO192_168_1_221 SET DIETA = @DIETA">
</asp:SqlDataSource>
e dal WebGrid_UpdatingCommand:
XE.UpdateCommand = "UPDATE CARICO192_168_1_221 SET" & _
" COGNOME = '" & COGNOME & "'," & _
" DIETA = '" & DIETA & "'," & _
" where SEQUENZA ='" & Session("ItemInfo") & "'"
XE.Update()
C1WebGrid1.DataBind()
Quando vado in editing e dopo in updating per aggiornare mi succede che:
l' aggiornamento viene eseguito e i dati scritti: l' Update viene eseguito, il Databind anche ma quando la pagina si deve riaggiornare mi appare l' errore:
"ORA-01036: Nome o numero di variabili non ammesso"
Le ho provate tutte, leggendo in vari forum: cambiare @ con :, togliere, mettere....ma niente.
Mi sapreste aiutare??
Grazie mille
Aggiungo stringa SQL generata:
"UPDATE CARICO192_168_1_221 SET COGNOME = 'LUCA', DIETA = 'COMUNE DEGENTI' where SEQUENZA ='001'"
che, dato che nel database aggiorna, presumo sia corretta....
AirLainz
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 30 lug 2009 - 18:48
>Ciao a tutti...
ciao
>Aggiungo stringa SQL generata:
>"UPDATE CARICO192_168_1_221 SET COGNOME = 'LUCA', DIETA = 'COMUNE
>DEGENTI' where SEQUENZA ='001'"
>che, dato che nel database aggiorna, presumo sia corretta....
ma scusa dove definisci i parametri del sqldatasource?
Tu stai definendo solo il comando coi placeholder dei parametri, ma poi ogni parametro va definito nella sezione <SelectParameters> e <UpdateParameters> come indicato qui:
http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.sqldatasource.aspx
leggi il link attentamente e ti accorgerai che non devi andare a creare tu i comandi, fa tutto da solo in base a come è composta la griglia.
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
ven 31 lug 2009 - 10:40
Ciao alx_81...intanto ti rigrazio per le risp.
Al momento ho aggiunto l' <UpdateParameters> solo del COGNOME perchè voglio provare che prima l' update funzioni con solo un campo e ho questo codice:
asp:
<asp:SqlDataSource
ID="XE" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionStringOracle %>"
ProviderName="<%$ ConnectionStrings:ConnectionStringOracle.ProviderName %>"
SelectCommand='SELECT * FROM "CARICO192_168_1_221"'
UpdateCommand="UPDATE CARICO192_168_1_221 SET COGNOME = :COGNOME" >
<UpdateParameters>
<asp:ControlParameter Name="COGNOME" ControlId="C1WebGrid1:txtCognome" PropertyName="Text"/>
</UpdateParameters>
</asp:SqlDataSource>
vb:
XE.UpdateCommand = "UPDATE CARICO192_168_1_221 SET COGNOME = :" & COGNOME
XE.Update()
Il problema è che ora ho il seguente errore:
"impossibile trovare il controllo "C1WebGrid1:txtCognome" in controlparameter "COGNOME"
Ho provato a metterlo dentro la mia C1webgrid, a tenerlo fuori, a metterlo dentro dal form ma mi appare sempre.
Poi ho trovato un thread
"
http://blogs.aspitalia.com/az/post1892/ControlParameter-Masterpage.-Bug.aspx"
che dice che potrtebbe essere un bug la causa.
E' cos' o continuo io a sbagliare?
Del Select non ho parametri in lettura da settare...li devo selezionare tutti xke tutti mi servono ma ne visualizzo solo alcuni.
Devo ugualmente fare il <SelectParameters> di tutti i campi? O solo di quelli che visualizzo?
ciao e grazie
AirLainz
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 31 lug 2009 - 10:47
>E' cos' o continuo io a sbagliare?
Io metterei la @ lo stesso perchè è il placeholder interno.
Poi con l'id del controllo, si intende l'id lato server quindi SOLO txtCognome.
>Del Select non ho parametri in lettura da settare...li devo selezionare
>tutti xke tutti mi servono ma ne visualizzo solo alcuni. Devo ugualmente fare il <SelectParameters> di tutti i campi?
>O solo di quelli che visualizzo?
se è una select all, non devi definire alcun parametro
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
ven 31 lug 2009 - 11:14
Modificato cosi ma stesso errore:
<asp:SqlDataSource
ID="XE" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionStringOracle %>"
ProviderName="<%$ ConnectionStrings:ConnectionStringOracle.ProviderName %>"
SelectCommand='SELECT * FROM "CARICO192_168_1_221"'
UpdateCommand="UPDATE CARICO192_168_1_221 SET COGNOME = @COGNOME" >
<UpdateParameters>
<asp:ControlParameter Name="COGNOME" ControlId="txtCognome" PropertyName="Text"/>
</UpdateParameters>
</asp:SqlDataSource>
Cosa posso provare?
Grazie e ciao
AirLainz
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 31 lug 2009 - 11:19
>Modificato cosi ma stesso errore:
>
> <asp:SqlDataSource
> ID="XE" runat="server"
>ConnectionString="<%$ ConnectionStrings:ConnectionStringOracle
>%>"
>ProviderName="<%$ ConnectionStrings:ConnectionStringOracle.ProviderName
>%>"
>SelectCommand='SELECT * FROM "CARICO192_168_1_221"'
>UpdateCommand="UPDATE CARICO192_168_1_221 SET COGNOME = @COGNOME"
>>
> <UpdateParameters>
><asp:ControlParameter Name="COGNOME" ControlId="txtCognome"
>PropertyName="Text"/>
> </UpdateParameters>
> </asp:SqlDataSource>
>
>Cosa posso provare?
tu hai masterpages? oppure è una semplice pagina aspx?
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
ven 31 lug 2009 - 11:21
semplice pagina aspx da visual studio 2005.
Se ti puo essere utile ho installato oracle 11g ma il database è in versione oracleXE...
AirLainz
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 31 lug 2009 - 11:25
>semplice pagina aspx da visual studio 2005.
allora il link di aspitalia non ti serve perchè parla di master pages.
>Se ti puo essere utile ho installato oracle 11g ma il database è in versione oracleXE...
mi potresti passare tutto l'aspx? replico su sql server.
Un'altra cosa, la select, elimina quei doppi apici e usali come hai fatto per l'update
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
ven 31 lug 2009 - 11:32
1123_Default.zip
mi potresti passare tutto l'aspx?
ECCOLO
replico su sql server
??
grazie mille
AirLainz
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 3 ago 2009 - 14:55
>replico su sql server??
Ho fatto un esempio con sql..
Ma prima ho fatto caso che il tuo controllo è all'interno della WebGrid. Che io sappia non puoi passare il nome del controllo se esso è "ripetuto" all'interno di un'altro controllo.
Devi usare la normale collezione dei parametri, ed iniettare il valore nell'evento UPDATING della tua griglia..
> grazie mille
di nulla!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
lun 31 ago 2009 - 10:57
Ciao...scusa ma sono stato in vacanza e riprendo il tutto ora..
"Devi usare la normale collezione dei parametri, ed iniettare il valore nell'evento UPDATING della tua griglia.."
Cosa intendi?
Io ho il mio evento ....
"Protected Sub C1WebGrid1_UpdatingCommand(ByVal sender As Object, ByVal e As C1.Web.C1WebGrid.C1UpdatingEventArgs) Handles C1WebGrid1.UpdatingCommand"
....al cui interno ho provato a mettere i miei parametri...
'XE.UpdateParameters.Add("@COGNOME", TypeCode.String, COGNOME)
'XE.UpdateCommand = "UPDATE CARICO192_168_1_221 SET COGNOME = '" & COGNOME & "'"
XE.Update()
C1WebGrid1.DataBind()
ma niente...stesso problema.
Intendi questo per "normale collezione dei parametri, ed iniettare il valore nell'evento UPDATING della tua griglia"??
L' unico modo per fargli scrivere i dati era come impostato inizialmente, senza updateparameters ma con poi l' errore "ORA-01036"..
Vuoi che ti passi altro?
Grazie mille
--
AirLainz
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 2 set 2009 - 00:49
per evento updating intendo questo:
http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.sqldatasource.updating.aspx
>....al cui interno ho provato a mettere i miei parametri...
>'XE.UpdateParameters.Add("@COGNOME", TypeCode.String, COGNOME)
>ma niente...stesso problema.
Ma se il parametro è già sul sqldatasource, non devi fare la add, ma piuttosto accedere al parametro che già hai, cambiando il defaultvalue.
accedi con:
XE.UpdateParameters("@COGNOME").DefaultValue = COGNOME
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
mer 2 set 2009 - 11:50
Ciao...
ho guardato il link che mi hai mandato
http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.sqldatasource.updating.aspx
e anche questo per l' update con gridview, dato che io uso la WebGrid della ComponentOne che è simile...
http://msdn.microsoft.com/en-us/library/ms972948%28printer%29.aspx
Ho provato anche ad utilizzare
XE.UpdateParameters("@COGNOME").DefaultValue = COGNOME
ma niente...l' errore mi si presenta sempre quando deve eseguire l' update del datasource (XE.Update).
Secondo me (scusami se mi son permesso, è come se un allenatore dilettantistico dicesse il suo parere ad Ancelotti....) il problema è negli <UpdateParameters>
Se metto <asp:Parameter> come indicato in certi siti
<UpdateParameters>
<asp:Parameter Type="String" Name="COGNOME">
</UpdateParameters>
ottengo l' errore "ORA-01036: Nome o numero di variabili non ammesso"
altrimenti con <asp:ControlParameter>:
<UpdateParameters>
<asp:ControlParameter Name="COGNOME" ControlId="txtCognome" PropertyName="Text"/>
</UpdateParameters>
ottengo: "impossibile trovare il controllo "C1WebGrid1:txtCognome" in controlparameter "COGNOME"
Ho provato anche a sostituire ControlId="txtCognome" con ControlId="C1WebGrid1" ma poi ho problemi nel settargli il PropertyName. Ho provato con PropertyName="Text" / "COGNOME" ma niente.
Il problema me lo da sempre con XE.Update e l' eccezione è: "Eccezione first-chance di tipo 'System.Web.HttpException' in System.Web.dll"
Non è che sia un problema di .dll che utilizzo?
Non so più dove sbattere la testa, son riuscito a fare tutto e mi manca solo questo dannato UPDATE con ORACLE per finire...!!!
Grazie per la pazienza e gli aiuti...
--
AirLainz
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
gio 3 set 2009 - 11:35
sto provando a disinstallare oracle XE e oracle 11g che utilizzavo...non vorrei andassero in conflitto...potrebbe essere dato da questo il problema?
Ora provo solo con oracle database 10g...tu cosa consiglieresti di utilizzare?
Ciao e grazie mille come sempre
--
AirLainz
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 3 set 2009 - 14:18
>sto provando a disinstallare oracle XE e oracle 11g che utilizzavo...non
>vorrei andassero in conflitto...potrebbe essere dato da questo
>il problema?
Purtroppo oracle non lo conosco. Mi sembra strano, perchè con SQL Server non ho avuto nessun problema..
>Ora provo solo con oracle database 10g...tu cosa consiglieresti
>di utilizzare?
ehehe.. io sono di parte, ORACLE lo userei solo se l'ambiente è enterprise.. in altri casi, SQL Server è assolutamente più che sufficiente (anch'esso regge degli ambienti di produzione veramente spinti, non sottovalutarlo
).
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
gio 3 set 2009 - 14:51
>Purtroppo oracle non lo conosco. Mi sembra strano, perchè con SQL Server non ho avuto nessun problema..
Infatti anche a me dopo un pò è venuto il dubbio che fosse qualcosa non legato al codice...vedremo, ti faccio sapere.
>ehehe.. io sono di parte, ORACLE lo userei solo se l'ambiente è enterprise.. in altri casi, SQL Server è assolutamente più che >sufficiente (anch'esso regge degli ambienti di produzione veramente spinti, non sottovalutarlo ).
Purtroppo questo sarebbe una nuova applicazione ma su qualcosa già fatto in vb6 con ORACLE, quindi non mi posso muovere da certe cose di base.
Per ora grazie mille, sei davvero gentile e paziente.
Ciao
--
AirLainz
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
ven 4 set 2009 - 17:25
Ciao...nessuna soluzione...sempre errore ORA-01036.
Il bello è che se non imposto e tolgo <UpdateParameters> mi da l' errore ma mi aggiorna e da SQL in manuale funziona bene!
Non ruiscite voi a fare prove su ORACLE? Sai altrimenti a chi posso rivolgermi?
Non so più cosa provare..
Ciao
--
AirLainz
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
sab 5 set 2009 - 13:04
>Ciao...nessuna soluzione...sempre errore ORA-01036.
>Il bello è che se non imposto e tolgo <UpdateParameters>
>mi da l' errore ma mi aggiorna e da SQL in manuale funziona bene!
>
>Non ruiscite voi a fare prove su ORACLE? Sai altrimenti a chi
>posso rivolgermi?
l'unico post che si avvicina al tuo cercando un po' è questo:
http://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/2690f60c-170b-4ba3-be82-a150ff46c8ff/
Leggendolo capirai che l'update funziona sicuramente
.
Quindi il problema sta nel fatto che o non valorizzi correttamente o non usi le sintassi giuste..
di più proprio non saprei che dirti.
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
lun 7 set 2009 - 10:44
>l'unico post che si avvicina al tuo cercando un po' è questo:
>
http://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/2690f60c-170b-4ba3-be82-a150ff46c8ff/
ciao ho fatto come nel post...da codice vb aggiorna ma l' errore me lo trovo sempre quando termina il codice in vb e deve riaggiornare la pagina...l' update funziona perche quando riavvio mi trovo i dati modificati...
Adesso provo a vedere se il problema puo essere nella select che rifa quando deve rileggere la pagina
--
AirLainz
sorigrafia
Profilo
| Junior Member
71
messaggi | Data Invio:
mar 8 set 2009 - 11:24
Ho trovato una scappatoia...
Dato che riesco ad aggiornare da codice ho fatto una funzione che mi aggiorna e poi resetta la modalità di modifica della mia gridview...per il momento funziona anche se non è il percorso che dovrebbe seguire con i comandi di Update da pagina aspx...
Se dovessi avere novità, scrivo anche per altri.
--
AirLainz
Torna su
Stanze Forum
Elenco Threads
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 !