Problema

lunedì 26 febbraio 2007 - 16.23

melmar20 Profilo | Junior Member

Ciao a tutti...ho problema che non riesco a risolvere...

In pratica vorrei creare una pagina asp con una TextBox.Ogni volta che carico la pagina voglio che nella TextBox compai il primo ed unico valore presente in una tabella del mio Database(Microsoft SQL Server). Dico primo ed unico valore perchè la prima volta che la pagina viene caricata inserisco per la prima volta il valore e tutte le altre volte che vaerrà caricata questo valore verrà aggiornato.

Per fare questo ho scritto le seguenti Store Procedure
/****** CREATE TABELLA SETTINGS ******/ CREATE TABLE [dbo].[SettingsRootUrl]( [RootUrl] [nvarchar](50) NOT NULL CONSTRAINT [PK_Settings] PRIMARY KEY CLUSTERED ( [RootUrl] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** PROCEDURA PER SELEZIONARE IL VALORE ******/ create procedure SelectRootUrl AS SELECT RootUrl FROM SettingsRootUrl GO /****** PROCEDURA PER INSERIRLO LA PRIMA VOLTA IL VALORE ******/ create procedure AddRootUrl @RootUrl nvarchar(50) as insert into SettingsRootUrl ( RootUrl ) values ( @RootUrl ) GO /****** PROCEDURA PER AGGIORNARE IL VALORE ******/ create procedure UpdateRootUrl @RootUrl nvarchar(50) as update {objectQualifier}SettingsRootUrl set RootUrl = @RootUrl GO

Qeste procedure le richiamo dal seguente codice scritto in vb.net
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

L'errore che mi dà ogni volta è che mi inserisce una stringa vuota la prima volta e se ricarico la pagina e inserisco nuovamente un valore mi segnala un errore di violazione della Chiave primaria..

non riesco a capire dove possa essere l'errore

amelix Profilo | Expert

Se devi avere solo una riga non ti conviene cancellare tutto prima di inserirla nuovamente?
Andrea
http://www.MelisWeb.eu/

melmar20 Profilo | Junior Member

non voglio cancellare prima tutto perchè voglio che la riga compaia nella TexTBox...

In modo che l'utente decida di modificarla o lasciarla così com'è

amelix Profilo | Expert

OK.
Come dichiari RootUrl nel codice?

Prova a fere il controllo strin.IsNullOrEmpty(RootUrl) che ti restituisce true nel casi sia NULL o string.Empty. (In C#si scrive così)
Andrea
http://www.MelisWeb.eu/

melmar20 Profilo | Junior Member

la variabile RootUrl la dichiaro così

#Region "Private Members"

Private RootUrl As String = ""

#End Region

ho provato con la stringa che mi hai suggerito ma niente...

sempre lo stesso problema....

Ho controllato il punto è che quando faccio l'update la prima volta che carico la pagiana anche se nel Box inserisco una stringa nel Database mi inserisce una stringa vuota....

Non sò a cosa possa esser dovuto questo....

Aiuto!!!

alx_81 Profilo | Guru

>Aiuto!!!
Eccoci
mi permetto di intervenire e consigliarti di cambiare il tuo codice, in questo simile, ma che a mio avviso fa quello che ti server
Ho cambiato poco per lasciarlo il più simile possibile al tuo, anche se su alcune cose non mi trovo completamente d'accordo, soprattutto sul DB, chiavi, campi, storedprocedure, ma sono pignolo .. non farci troppo caso..
Comunque eccoti il codice che puoi utilizzare, te l'ho commentato dove ritenevo opportuno un cambiamento:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Provato su un mio semplice esempio funziona, spero vada bene anche per la tua problematica..
ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino

melmar20 Profilo | Junior Member

Ciao Alx!!!

ho provato a modificare il codice,ma purtroppo il problema non sono riuscito a risolverlo del tutto....

Adesso riesco a fare solo il primo inserimento e a visualizzare il valore del primo record,se però provo ad aggiornarlo ,cioè a modificare la stringa che mi viene visualizzata non scuccede niente,il valore inserito nel primo record della tabella rimane sempre lo stesso...

Sembrerebbe quasi che il flusso non entri mai nell'ELSE di questo costrutto :

If RootUrl = "" Then
objCmd = New SqlCommand("YourCompany_AddRootUrl", objConn)
Else

objCmd = New SqlCommand("YourCompany_UpdateRootUrl", objConn)
End If

e non riesco a capirene il perchè....eppure la variabile RootUrl dopo il primo inserimento dovrebbe essere <> ""

Probabilmente c'è qualche errore nella parte relativa al DB....

non sò se è possibile creare una procedura come la mia UpdateRootUrl senza la clausola WHERE...

alx_81 Profilo | Guru

>Ciao Alx!!!
>
>ho provato a modificare il codice,ma purtroppo il problema non
>sono riuscito a risolverlo del tutto....

fai un bel debug
e vedrai che risolvi
Alx81 =)

http://blogs.dotnethell.it/suxstellino

melmar20 Profilo | Junior Member

non ci crederai ma non và neanche con il Debug.....

non riesco ad aggiornare la prima stringa che inserisco....

una question: la procedura di Update che ho scritto è valida?

cioè può essere scritta senza una clausola WHERE?

amelix Profilo | Expert

Rieccomi....
Secondo me manca solo il controllo del IsPostBack nel page_load.

Tutte le volte si va a riprendere il dato dal DB e, il dato modificato, viene perso.
Andrea
http://www.MelisWeb.eu/

alx_81 Profilo | Guru

>non ci crederai ma non và neanche con il Debug.....
eheh.. il debug ti serviva per controllare.. non per vedere che va nello stesso modo
>
>non riesco ad aggiornare la prima stringa che inserisco....
volevo farti guardare il debug così capivi dove sta l'errore.. è nel fatto che non gestisci la postback.. come dice anche amelix..
Col debug si vede bene .. devi provare un po' di più
>
>una question: la procedura di Update che ho scritto è valida?
>cioè può essere scritta senza una clausola WHERE?
non mi piace, ma se tu sei sicuro che sul db c'è una riga va bene lo stesso..
in generale le where sono utili sempre..
anche perchè ti fanno capire se quella tabella deve avere o no una riga sola..altrimenti fra mesi non ti ricordi più perchè hai fatto così
ciao melmar20..

Alx81 =)

http://blogs.dotnethell.it/suxstellino
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5