Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [vb2012] IndexOutofRangeException

    Salve,
    ho un problema:
    IndexOutofRangeExxeption non è stata gestita
    Indice oltre i limiti della matrice.
    Con vb 2012 e un db fatto in access chiamato emp
    Devo effettuare la lettura per la chiave "anno" di n_record formati inizialmente da due campi (anno; popolazione).
    Il codice scritto funziona finchè ho la necessità di un terzo campo (in realtà arriveranno ad 13 campi in totale.)

    A questo punto modifico:

    codice:
    sqlStr = "insert into info values(" & txtEid.Text & ", " & txtEname.Text & ")"
    a
    codice:
    sqlStr = "insert into info values(" & txtEid.Text & ", " & txtEname.Text & ", " & txtprova.Text & ")"
    e modifico
    codice:
    dr = cmd.ExecuteReader()
            If dr.HasRows = True Then
                While dr.Read()
                    txtEid.Text = dr(0)
                    txtEname.Text = dr(1)
    a
    codice:
    dr = cmd.ExecuteReader()
            If dr.HasRows = True Then
                While dr.Read()
                    txtEid.Text = dr(0)
                    txtEname.Text = dr(1)
            txtprova.Text = dr(2)
    ECCO IL CODICE:
    codice:
    Public Class Form1
        Dim con As System.Data.OleDb.OleDbConnection
        Dim cmd As System.Data.OleDb.OleDbCommand
        Dim dr As System.Data.OleDb.OleDbDataReader
        Dim sqlStr As String
       
        Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            con = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\0_2p\emp.accdb")
                 con.Open()
            MsgBox("Connessione Riuscita")
    
    
            sqlStr = "insert into info values(" & txtEid.Text & ", " & txtEname.Text & ", " & txtprova.Text & ")"
            ' aggiungo il mio terzo campo da leggere e da inserire il dato in txtprova.text
    
    
            cmd = New OleDb.OleDbCommand(sqlStr, con)
            cmd.ExecuteNonQuery()
            MsgBox("Record inserito correttamente")
            con.Close()
    
    
        End Sub
    
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim id As Integer
    
    
            id = Val(InputBox("Inserire anno di riferimento"))
    
    
            con = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\0_2p\emp.accdb")
            con.Open()
            MsgBox("Connessione Riuscita")
    
    
            sqlStr = "Select * from info where anno =" & id & ""
            ' la mia tabella si chiama anno
    
    
            cmd = New OleDb.OleDbCommand(sqlStr, con)
            dr = cmd.ExecuteReader()
            If dr.HasRows = True Then
                While dr.Read()
                    txtEid.Text = dr(0)
                    txtEname.Text = dr(1)
                    txtprova.Text = dr(2)
                    ' il mio errore
                End While
            End If
            
            MsgBox("Record trovato")
            con.Close()
        End Sub
    End Class
    GRAZIE
    Ultima modifica di MItaly; 02-11-2013 a 22:06

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma in quale linea hai l'errore?

    P.S. Usa i tag CODE per il codice altrimenti non si capisce nulla ...

    P.P.S. Exception
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ciao,
    grazie intanto per la dritta sui tag CODE (ma non so abilitarli)
    e sul titolo errato.

    Cmq l'errore l'ho segnato in grassetto
    txtprova.Text = dr(2)
    ' il mio errore

  4. #4
    grazie MItaly;
    spero che qualcuno può aiutarmi ora visto che l'hai reso più chiaro

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Prima di tutto non ho capito se vuoi leggere dei dati (nel qual caso mi aspetterei una SELECT e non una INSERT) oppure non ho capito ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Prima di tutto non ho capito se vuoi leggere dei dati (nel qual caso mi aspetterei una SELECT e non una INSERT) oppure non ho capito ...
    sono due bottoni diversi Inserimento verso db e lettura da db.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma nella tabella su cui fare la query quali sono i campi?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Quote Originariamente inviata da giofriscia Visualizza il messaggio
    Ciao,
    grazie intanto per la dritta sui tag CODE (ma non so abilitarli)
    e sul titolo errato.

    Cmq l'errore l'ho segnato in grassetto
    txtprova.Text = dr(2)
    ' il mio errore
    evidentemente il tuo recordset è di sole due colonne (0 la prima, 1 la seconda). tentando di leggere la terza lo schiavetto dà errore

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Infatti ... volevo capire quali e quanti sono i campi restituiti dalla tabella in questione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    visto che esegue questa

    sqlStr = "Select * from info where anno =" & id & ""

    basta sapere di quante colonne è formata la tabella info

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.