Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206

    [VB.NET]Grave errore (nella query???)

    codice:
    Dim str as string = "Database=CURRICULUM;Server=xxx.xxx.xxx.xxx;user ID=xxx;pwd=xxx"
                    Dim conn as new SqlConnection(str)
                    conn.open
                    Dim SQL2 = "SELECT MAX(ID_PARENTI) FROM PARENTI"
                    Dim cmd2 as New SqlCommand(sql2, conn)
                    Dim dr2 as  SqlDataReader = cmd2.ExecuteReader()
    				If IsNothing(dr2.read()) then
    					Session("parenti") = 1
    				else
    					While dr2.read()
    						Dim par as integer = dr2.Item(0)
    						Dim id_par as integer = par + 1
    						Session("parenti") = id_par
    					end while
    				end if
                    dr2.close()
    Mi dovrebbe restituire:
    se c'è gia qualche record Session("parenti") = 1
    altrimenti session("parenti") = ultimo_record + 1
    però non va
    dà questo errore:
    Server Error in '/wcv' Application.
    --------------------------------------------------------------------------------

    Prepared statement '(@id int,@nome_p varchar(3),@nome_m varchar(4),@nome_b varchar(3' expects parameter @id, which was not supplied.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.Data.SqlClient.SqlException: Prepared statement '(@id int,@nome_p varchar(3),@nome_m varchar(4),@nome_b varchar(3' expects parameter @id, which was not supplied.

    Source Error:


    Line 95: cmd.Parameters.add("@pro_c2", sqldbtype.varchar).value = cld2job.text
    Line 96: cmd.Parameters.add("@cong", sqldbtype.varchar).value = cONGIUNTI.text
    Line 97: cmd.ExecuteNonQuery
    Line 98: ' RECUPERO DATO ULTIMO RECORD TABELLA ### MILITARE ###
    Line 99: Dim SQL3 = "SELECT MAX(ID_MILIT) FROM MILITARE"


    Source File: D:\Wcv\index.aspx Line: 97

    Stack Trace:


    [SqlException: Prepared statement '(@id int,@nome_p varchar(3),@nome_m varchar(4),@nome_b varchar(3' expects parameter @id, which was not supplied.]
    System.Data.SqlClient.SqlCommand.ExecuteReader(Com mandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream) +723
    System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +194
    ASP.index_aspx.bangbang(Object sender, EventArgs e) in D:\Wcv\index.aspx:97
    System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
    System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String eventArgument) +57
    System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler sourceControl, String eventArgument) +18
    System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData) +33
    System.Web.UI.Page.ProcessRequestMain() +1277




    --------------------------------------------------------------------------------
    Version Information: Microsoft .NET Framework Version:1.1.4322.573; ASP.NET Version:1.1.4322.573
    cosa può essere?

  2. #2
    dr2.read() non è mai nothing, restituisce tru o false a seconda che sia riuscito a leggere dei record, prova a modificare
    codice:
    If IsNothing(dr2.read()) then
    cosi:
    codice:
    If dr2.read()=false then

  3. #3
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    Originariamente inviato da DeBe99
    dr2.read() non è mai nothing, restituisce tru o false a seconda che sia riuscito a leggere dei record, prova a modificare
    codice:
    If IsNothing(dr2.read()) then
    cosi:
    codice:
    If dr2.read()=false then
    esattamente come prima, anche facendo come hai consigliato tu

  4. #4
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    ecco tutto il codice:
    codice:
    Sub bangbang(sender as object, e as eventargs)
        ' RECUPERO DATO ULTIMO RECORD TABELLA ### PARENTI ###
                    Dim str as string = "Database=CURRICULUM;Server=xxx.xxx.xxx.xxx;user ID=xxx;pwd=xxx"
                    Dim conn as new SqlConnection(str)
                    conn.open
                    Dim SQL2 = "SELECT MAX(ID_PARENTI) FROM PARENTI"
                    Dim cmd2 as New SqlCommand(sql2, conn)
                    Dim dr2 as  SqlDataReader = cmd2.ExecuteReader()
    				If dr2.read() = false then
    					Session("parenti") = 1
    				else
    					While dr2.read()
    						Dim par as integer = dr2.Item(0)
    						Dim id_par as integer = par + 1
    						Session("parenti") = id_par
    					end while
    				end if
                    dr2.close()
        ' INSERIMENTO DATI NELLA TABELLA ### PARENTI ###
                    Dim sql as string = "INSERT INTO [PARENTI] (ID_PARENTI, NOME_PADRE, NOME_MADRE, NOME_FRA_UNO, NOME_FRA_DUE, NOME_CONIUGE, NOME_FIGL_UNO, NOME_FIGL_DUE,"
                    sql &= "ETA_PADRE, ETA_MADRE, ETA_FRA_UNO, ETA_FRA_DUE, ETA_CONIUGE, ETA_FIGL_UNO, ETA_FIGL_DUE,"
                    sql &= "PRO_PADRE, PRO_MADRE, PRO_FRA_UNO, PRO_FRA_DUE, PRO_CONIUGE, PRO_FIGL_UNO, PRO_FIGL_DUE, CONGIUNTI)"
                    sql &= " VALUES(@id, @nome_p, @nome_m, @nome_b, @nome_b2, @nome_h, @nome_c, @nome_c2,"
                    sql &= "@eta_p, @eta_m, @eta_b, @eta_b2, @eta_h, @eta_c, @eta_c2,"
                    sql &= "@pro_p, @pro_m, @pro_b, @pro_b2, @pro_h, @pro_c, @pro_c2, @cong)"
                    Dim cmd as new sqlcommand(sql, conn)
                    cmd.Parameters.add("@id", sqldbtype.int).value = Session("parenti")
                    cmd.Parameters.add("@nome_p", sqldbtype.varchar).value = dadNaME.text
                    cmd.Parameters.add("@nome_m", sqldbtype.varchar).value = momname.text
                    cmd.Parameters.add("@nome_b", sqldbtype.varchar).value = brosname.text
                    cmd.Parameters.add("@nome_b2", sqldbtype.varchar).value = bros2name.text
                    cmd.Parameters.add("@nome_h", sqldbtype.varchar).value = hbname.text
                    cmd.Parameters.add("@nome_c", sqldbtype.varchar).value = cldname.text
                    cmd.Parameters.add("@nome_c2", sqldbtype.varchar).value = cld2name.text
                    cmd.Parameters.add("@eta_p", sqldbtype.varchar).value = dadage.text
                    cmd.Parameters.add("@eta_m", sqldbtype.varchar).value = momage.text
                    cmd.Parameters.add("@eta_b", sqldbtype.varchar).value = brosage.text
                    cmd.Parameters.add("@eta_b2", sqldbtype.varchar).value = bros2age.text
                    cmd.Parameters.add("@eta_h", sqldbtype.varchar).value = hbage.text
                    cmd.Parameters.add("@eta_c", sqldbtype.varchar).value = cldage.text
                    cmd.Parameters.add("@eta_c2", sqldbtype.varchar).value = cld2age.text
                    cmd.Parameters.add("@pro_p", sqldbtype.varchar).value = dadjob.text
                    cmd.Parameters.add("@pro_m", sqldbtype.varchar).value = momjob.text
                    cmd.Parameters.add("@pro_b", sqldbtype.varchar).value = brosjob.text
                    cmd.Parameters.add("@pro_b2", sqldbtype.varchar).value = bros2job.text
                    cmd.Parameters.add("@pro_h", sqldbtype.varchar).value = hbjob.text
                    cmd.Parameters.add("@pro_c", sqldbtype.varchar).value = cldjob.text
                    cmd.Parameters.add("@pro_c2", sqldbtype.varchar).value = cld2job.text
                    cmd.Parameters.add("@cong", sqldbtype.varchar).value = cONGIUNTI.text
                    cmd.ExecuteNonQuery

  5. #5
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    se tolgo il ciclo if e metto a mano sul DB un record, funziona tutto, quindi credo che il problema sia nel ciclo if, ma dove???

  6. #6
    l'errore te lo da in entrambi i casi (con la tabella vuota o con dei record inseriti)?

  7. #7
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    solo a tab vuota senza record

  8. #8
    prova a mettere un punto di interruzione prima dell'if, e vedi se ci entri. magari prova anche a stamparti il valore di Session("parenti") per vedere se almeno ci passa...

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    151
    Non faresti prima a rendere id_parenti un campo di tipo identity che aumenta da solo (come un campo contatore in access) così non hai bisogno di calcolarti il valore da dare a session("parenti")?

  10. #10
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    Originariamente inviato da hankmccoy
    Non faresti prima a rendere id_parenti un campo di tipo identity che aumenta da solo (come un campo contatore in access) così non hai bisogno di calcolarti il valore da dare a session("parenti")?
    no, non posso perchè devo recuperare quell'id

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 © 2026 vBulletin Solutions, Inc. All rights reserved.