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

    [VB.NET] Ricerca Dati in database Access

    Salve,
    premetto che non ho trovato nulla su google, utilizzo un database Access 2003 .mdb con Visual Studio 2008.
    Il Database ha una tabella Chiamata "Persone" composta da : "ID" , "Nome" , "Cognome".
    L'inserimento va a buon fine, ma non riesco a cercare un elemento cercandolo per ID.
    Ho provato la sintassi "SELECT Nome FROM Persone WHERE ID = '1'".

    Il codice per l'inserimento è questo:

    Codice PHP:
        Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
            Dim objconn 
    As OleDbConnection
            Dim stringaconn 
    As String
            Dim stringasql 
    As String
            Dim objcomm 
    As OleDbCommand
            stringaconn 
    "Provider=Microsoft.JET.OLEDB.4.0;Data Source="
            
    stringaconn stringaconn "c:\test\Persone.mdb"
            
    objconn = New OleDbConnection(stringaconn)
            
    objconn.Open()
            
    stringasql "Insert into Persone(Nome,Cognome) values('"
            
    stringasql stringasql Me.TNome.Text "'" ","
            
    stringasql stringasql "'" Me.TContenuto.Text "'" ")"
            
    objcomm = New OleDbCommand(stringasqlobjconn)
            
    Dim risputente As Integer
            
    Try
                
    risputente objcomm.ExecuteNonQuery()
                If 
    risputente 1 Then
                    MsgBox
    ("Inserimento effettuato con successo")
                    
    objconn.Close()
                    
    Me.TNome.Text ""
                    
    Me.TContenuto.Text ""
                    
    Me.TNome.Focus()
                
    End If
            Catch 
    es As Exception
                MsgBox
    ("Errore: il campo cognome e/o nome sono vuoti")
                
    objconn.Close()
            
    End Try

        
    End Sub 
    mentre per la ricerca avevo modificato così :

    Codice PHP:

    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
            Dim objconn 
    As OleDbConnection
            Dim stringaconn 
    As String
            Dim stringasql 
    As String
            Dim objcomm 
    As OleDbCommand
            stringaconn 
    "Provider=Microsoft.JET.OLEDB.4.0;Data Source="
            
    stringaconn stringaconn "c:\test\Persone.mdb"
            
    objconn = New OleDbConnection(stringaconn)
            
    objconn.Open()
            
    stringasql "SELECT Nome FROM Persone WHERE ID = '1'"
            
    objcomm = New OleDbCommand(stringasqlobjconn)
            
    Dim risputente As Integer
            
    Try
                
    risputente objcomm.ExecuteNonQuery()
                If 
    risputente 1 Then
                    MsgBox
    ("Trovato")
                    
    objconn.Close()
                    
    TNome.Textrisputente
                     
                End 
    If
            Catch 
    es As Exception
                MsgBox
    ("Errore: il campo ID è vuoto")
                
    objconn.Close()
            
    End Try

        
    End Sub 
    Come potrei ricercare un dato dal ID e inserire L'ID non a mano ma con una TextBox?

    PS= Non fate caso all'errore "ID non inserito" anche perchè è scritto sopra, sempre se la sintassi è giusta.

  2. #2
    non devi utilizzare un EXECUTENONQUERY con una query SELECT altrimenti non avrai nessun risultato... devi utilizzare EXECUTEREADER ed assegnarlo ad un DATAREADER, poi ciclando ques'ultimo (od inserendo l'indice) potrai leggere il record che ti interessa...
    I database... la mia passione + o -

  3. #3
    Non è che potresti farmi un esempio di codice?
    Con i database è la prima volta che ci lavoro.

  4. #4
    Devo premettere che lavoro con VB2003 quindi non so se qualcosa è cambiato, credo di no comunque..

    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim objconn As OleDbConnection
            Dim stringaconn As String
            Dim stringasql As String
            Dim objcomm As OleDbCommand
            stringaconn = "Provider=Microsoft.JET.OLEDB.4.0;Data Source="
            stringaconn = stringaconn & "c:\testPersone.mdb"
            objconn = New OleDbConnection(stringaconn)
            objconn.Open()
            stringasql = "SELECT Nome FROM Persone WHERE ID = '1'"
            objcomm = New OleDbCommand(stringasql, objconn)
            Dim drPersona as DataReader
            Try
                drPersona = objcomm.ExecuteReader()
                If drPersona.HasRow=True Then
                    MsgBox("Trovato")
                    drPersona.Read
                    TNome.Text= drPersona("Nome").tostring
                    objconn.Close()                 
                End If
            Catch es As Exception
                MsgBox("Errore: il campo ID è vuoto")
                objconn.Close()
            End Try
    
        End Sub
    naturalmente è un esempio... studiati l'uso del datareader e del command.executereader..
    I database... la mia passione + o -

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da power.mobile
    naturalmente è un esempio... studiati l'uso del datareader e del command.executereader..
    E dalla via che ci sei, studiati anche come usare i Parametri nei Command che ti eviteranno molti mal di testa, ore insonni, ecc...

    Tra l'altro, sospetto che il campo ID sia di tipo numerico (quasi sempre lo è) quindi se tu alla WHERE gli passi il valore racchiuso tra apici, il motore di database ti risponderà picche.

    Per un esempio su DataReader, Command e Parametri con ADO.NET guarda la mia firma.


  6. #6
    non mi legge il datareader, mentre executereder non da errore.
    Forse è perchè non ho importato le classi sufficienti?

    io ho importato "Imports System.Data.OleDb"

    c'è altro da aggiungere?

    l'errore per datareader è : Tipo 'DataReader' non definito

  7. #7
    Ho messo tra apici perchè con Php facevo così

  8. #8
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Invece di dichiarare:

    Dim drPersona as DataReader


    dichiara così

    Dim drPersona as OleDbDataReader


  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da Felice1405
    Ho messo tra apici perchè con Php facevo così
    Il problema non è il linguaggio di programmazione usato.
    La formattazione dei dati dipende esclusivamente dal motore di database usato.

    Un paio di esempi:

    MDB (Access)
    - Numeri: nessun delimitatore
    - Stringhe: tra apici (')
    - Date: tra cancelletti (#)

    SQL Server/ Oracle
    - Numeri: nessun delimitatore
    - Stringhe: tra apici (')
    - Date: tra apici (')

    Ecco perchè ti ho suggerito di usare i Parametri nei xxxxCommand!!!
    Così non ti devi più preoccupare di quale formato richieda il database , ci pensa automaticamente il Command ad passare il Parametro usando il formato richiesto.

    Studiati il codice del mio esempio.


  10. #10
    Benissimo Grazie, voglio approfittare del Topic aperto per chiedervi se cancellando una riga direttamente da access e dopo aggiungo un nuovo dato in vb mi salta di 1 l'ID.
    Mi spiego meglio :

    STRUTTURA DELLA TABELLA

    ID Nome Cognome

    1 Mario Rossi

    2 Lino Giallo

    3 "Vuoto" "Vuoto"


    Ora se cancello la riga del ID 3 e aggiungo in vb un nuovo dato mi esce così

    ID Nome Cognome

    1 Mario Rossi

    2 Lino Giallo

    4 Pino Verde

    Cosa dovrei fare?

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.