Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Flatron
    Registrato dal
    May 2005
    Messaggi
    253

    Stored.P,Classe e ASPX non comunicano

    Ciaouz a tutti
    ho un problemi con delle aspx.
    Allora premetto come ho lavorato:
    Ho una classe Database (dll) nella quale ho inserito diverse funzioni per inserire,cercare,cancellare e aggiornare dati su un database.
    Il DB è Access.
    Nel DB ho delle SP alle quali passo i miei valori per eseguire le query (@param1,@param2,ecc).
    Le query su Access funzionano perfettamente quando gli si passano i valori nei parametri.

    Nella mia pagina .ASPX cosa ho fatto:
    Eseguo una ricerca in una tabella secondo dei criteri,popolo un datalist,poi controllo gli eventi OnEditCommand,OnDeleteCommand,OnUpdateCommand,OnCa ncelCommand ed assegno a questi ultimi le sub relative per fare quello che il comando dice (Editare,Eliminare,Aggiornare,Cancellare).
    Fin qui tutto ok, i comandi eseguono le sub e in effetti editano,cancellano,annullano MA NON FANNO L'UPDATE!!!!!
    PERCHE' ?????

    Praticamente questa è la sub che gestisce l'aggiornamento dei dati:


    Sub UpdateNegozio (obj as object, e as DatalistCommandEventArgs)
    'Gestione del comando OnUpdateCommand del controllo Datalist1

    Dim strconn,ne_nome,ne_icona,ne_coordx,ne_coordy,ne_in dirizzo,ne_cap,ne_citta,ne_tel,ne_fax,ne_email,ne_ desc,ne_foto1,ne_foto2,ne_img_banner,ne_txt_banner ,ne_img_logo,ne_sito as string
    Dim ID_Negozio,ne_id_tipologia,ne_online,ne_new,ne_sch eda,ne_banner,ne_logo as integer

    ID_Negozio = datalist1.DataKeys.Item (e.item.itemindex)

    ne_nome = cTYPE( e.Item.FindControl("BOX_NE_NOME"),textbox).text
    ne_id_tipologia = cTYPE( e.Item.FindControl("BOX_NE_ID_TIPOLOGIA"),textbox) .text
    ne_icona = cTYPE( e.Item.FindControl("BOX_NE_ICONA"),textbox).text
    ne_coordx = cTYPE( e.Item.FindControl("BOX_NE_COORDX"),textbox).text
    ne_coordy = cTYPE( e.Item.FindControl("BOX_NE_COORDY"),textbox).text
    ne_indirizzo = cTYPE( e.Item.FindControl("BOX_NE_INDIRIZZO"),textbox).te xt
    ne_cap = cTYPE( e.Item.FindControl("BOX_NE_CAP"),textbox).text
    ne_citta = cTYPE( e.Item.FindControl("BOX_NE_CITTA"),textbox).text
    ne_tel = cTYPE( e.Item.FindControl("BOX_NE_TEL"),textbox).text
    ne_fax = cTYPE( e.Item.FindControl("BOX_NE_FAX"),textbox).text
    ne_email = cTYPE( e.Item.FindControl("BOX_NE_EMAIL"),textbox).text
    ne_desc = cTYPE( e.Item.FindControl("BOX_NE_DESC"),textbox).text
    ne_foto1 = cTYPE( e.Item.FindControl("BOX_NE_FOTO1"),textbox).text
    ne_foto2 = cTYPE( e.Item.FindControl("BOX_NE_FOTO2"),textbox).text


    if (cTYPE( e.Item.FindControl("BOX_NE_ONLINE"),textbox).text = "True") then ne_online = 1 else ne_online = 0
    if (cTYPE( e.Item.FindControl("BOX_NE_NEW"),textbox).text = "True") then ne_new = 1 else ne_new = 0
    if (cTYPE( e.Item.FindControl("BOX_NE_SCHEDA"),textbox).text = "True") then ne_scheda = 1 else ne_scheda = 0
    if (cTYPE( e.Item.FindControl("BOX_NE_BANNER"),textbox).text = "True") then ne_banner = 1 else ne_banner = 0
    ne_img_banner = cTYPE( e.Item.FindControl("BOX_NE_IMG_BANNER"),textbox).t ext
    ne_txt_banner = cTYPE( e.Item.FindControl("BOX_NE_TXT_BANNER"),textbox).t ext
    if (cTYPE( e.Item.FindControl("BOX_NE_LOGO"),textbox).text = "True") then ne_logo = 1 else ne_logo = 0
    ne_img_logo = cTYPE( e.Item.FindControl("BOX_NE_IMG_LOGO"),textbox).tex t
    ne_sito = cTYPE( e.Item.FindControl("BOX_NE_SITO"),textbox).text



    StrConn = ConfigurationSettings.AppSettings("stringaconnessi one")
    Dim objdatabase as new Admin.Database(strconn)

    objdatabase.AggiornaDatiNegozio(ID_Negozio,ne_nome ,ne_id_tipologia,ne_icona,ne_coordx,ne_coordy,ne_i ndirizzo,ne_cap,ne_citta,ne_tel,ne_fax,ne_email,ne _desc,ne_foto1,ne_foto2,ne_online,ne_new,ne_scheda ,ne_banner,ne_img_banner,ne_txt_banner,ne_logo,ne_ img_logo,ne_sito)
    Datalist1.Databind()
    Datalist1.EditItemIndex = -1

    End Sub

    Io che cosa ho fatto: ho controllato che effttivamente il valore delle variabili sia quello che vedo nella pagina quindi variabili non nulle, e fin qui ok, poi ho iniziato a spostare il codice dalla classe alla pagina pensando che si perdessero per qualche motivo i valori passati alla classe stessa.
    Alla fine mi sembra di aver capito che l'update non posso farlo con una ASPX ---> Classe ---> Stored Procedure.
    PERCHE'?????
    Sembra anche leggendo qualche messaggio in questo forum che se si passano i valori ad una stored procedure tramite un datalist questi ultimi si perdono !!!! Ma come si perdono ? E dove vanno ?
    Visto che aspx utilizza XML per scambiare i dati dai DB alle pagine non è possibile per fare quest'update che non funzia utilizzare qualcosa per leggere un file XML (Sempre sapendo l'applicazione dove va a scrivere questi valori).
    Vi prego se sapete qualsiasi cosa di scrivermelo che ho finito un sito e mi manca per quanto riguarda l'amminitrazione di poter eseguire l'aggiornamento dei dati inseriti nel database.
    Non vorrei mettere stringadiconnessione,query,nomedeicampi nella pagina aspx, preferisco molto di piu' quest'approccio stile Linguaggio ad oggetti ma se non è possibile utilizzarlo per queste cazzate come quella che ho fatto io, bè allora........
    A voi le risposte
    Grazie a tutti
    Flat

  2. #2
    Credo che dovresti:
    - creare un oggetto OleDbCommand e passargli dentro i comandi sql per l'update e la stringa di connessione
    - aprire la connessione
    - eseguire con ExecuteNonQuery
    - chiudere la connessione

  3. #3
    Utente di HTML.it L'avatar di Flatron
    Registrato dal
    May 2005
    Messaggi
    253

    Risposta

    Vi posto il codice della classe.





    Public Sub AggiornaDatiNegozio(ne_id as integer,ne_nome as string,ne_id_tipologia as integer,ne_icona as string,ne_coordx as string,ne_coordy as string,ne_indirizzo as string,ne_cap as string,ne_citta as string,ne_tel as string,ne_fax as string,ne_email as string,ne_desc as string,ne_foto1 as string,ne_foto2 as string,ne_online as integer,ne_new as integer,ne_scheda as integer,ne_banner as integer,ne_img_banner as string,ne_txt_banner as string,ne_logo as integer,ne_img_logo as string,ne_sito as string)
    Dim objCmd as New OleDbCommand ("ModificaNegozio",objConn)

    objCmd.CommandType = CommandType.StoredProcedure

    Dim objParam as new OleDbParameter("@NE_ID",OleDbType.integer)
    objParam.Value = ne_id
    objCmd.Parameters.Add(objParam)

    objParam = new OleDbParameter("@NE_NOME",OleDbType.varchar)
    objParam.Value = ne_nome
    objCmd.Parameters.Add(objParam)

    objParam = new OleDbParameter("@NE_ID_TIPOLOGIA",OleDbType.Intege r)
    objParam.Value = ne_id_tipologia
    objCmd.Parameters.Add(objParam)

    objParam = new OleDbParameter("@NE_ICONA",OleDbType.varchar)
    objParam.Value = ne_icona
    objCmd.Parameters.Add(objParam)

    objParam = new OleDbParameter("@NE_COORDX",OleDbType.varchar)
    objParam.Value = ne_coordx
    objCmd.Parameters.Add(objParam)

    objParam = new OleDbParameter("@NE_COORDY",OleDbType.varchar)
    objParam.Value = ne_coordy
    objCmd.Parameters.Add(objParam)

    objParam = new OleDbParameter("@NE_INDIRIZZO",OleDbType.varchar)
    objParam.Value = ne_indirizzo
    objCmd.Parameters.Add(objParam)

    objParam = new OleDbParameter("@NE_CAP",OleDbType.varchar)
    objParam.Value = ne_cap
    objCmd.Parameters.Add(objParam)

    objParam = new OleDbParameter("@NE_CITTA",OleDbType.varchar)
    objParam.Value = ne_citta
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_TEL",OleDbType.varchar)
    objParam.Value = ne_tel
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_FAX",OleDbType.varchar)
    objParam.Value = ne_fax
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_EMAIL",OleDbType.varchar)
    objParam.Value = ne_email
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_DESC",OleDbType.varchar)
    objParam.Value = ne_desc
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_FOTO1",OleDbType.varchar)
    objParam.Value = ne_foto1
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_FOTO2",OleDbType.varchar)
    objParam.Value = ne_foto2
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_ONLINE",OleDbType.integer)
    objParam.Value = ne_online
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_NEW",OleDbType.integer)
    objParam.Value = ne_new
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_SCHEDA",OleDbType.integer)
    objParam.Value = ne_scheda
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_BANNER",OleDbType.integer)
    objParam.Value = ne_banner
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_IMG_BANNER",OleDbType.varchar)
    objParam.Value = ne_img_banner
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_TXT_BANNER",OleDbType.varchar)
    objParam.Value = ne_txt_banner
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_LOGO",OleDbType.integer)
    objParam.Value = ne_logo
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_IMG_LOGO",OleDbType.varchar)
    objParam.Value = ne_img_logo
    objCmd.Parameters.Add(objParam)


    objParam = new OleDbParameter("@NE_SITO",OleDbType.varchar)
    objParam.Value = ne_sito
    objCmd.Parameters.Add(objParam)


    try
    objConn.Open
    objCmd.ExecuteNonQuery
    objConn.Close
    Catch e as Exception
    throw e
    End Try
    End Sub



    Ho visto che qualcuno di voi per fare l'update ha utilizzato quello che io chiamo IL METODO AGRICOLO DELLA CLASSE CAMPAGNOLA , niente in contrario, ma arrivare al punto che per fare un'update bisogna scrivere la nuova riga modificata in un altra parte e poi cancellare quella precedente.

    Se esiste un problema in questa parte di codice di ASP.NET DITEMELO VI PREGO perchè sono piu' di due settimane che non riesco a capire questo problema.


    RIPETO RISPONDETEMI ANCHE CON UN "EFFETTIVAMENTE NON FUNZIONA"
    Thanks come sempre
    FLAT

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.