Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    74

    vb2010: parametrizzare funzione per lettura tabella mdb

    Salve a tutti.

    Avrei la necessità, per eseguire dei controlli, di leggere il valore di un campo da ogni tabella del mio mdb.

    Vorrei non ripetere tante volte il codice e così pensavo di creare una funzione a cui passare il nome della tabella ed il nome del campo da leggere.

    Questo il codice:

    codice:
    Private Function controlla_cos(ByVal cd As String, ByVal cpcod As String) As Boolean
            Dim strCN As String = stringaconn
            Dim sqlSelectDefault As String = "SELECT * FROM " & cd
            Dim CN As New OleDb.OleDbConnection(strCN)
            Dim DA As New OleDb.OleDbDataAdapter(sqlSelectDefault, CN)
            Dim DS As New DataSet
            DA.Fill(DS, cd)
    
    
            DS.Tables(cd).Rows(0).Item(cpcod)
    con l'idea che se devo controllare il campo CODcli della tabella clienti chiamerei la funzione con

    controlla_cod("clienti","CODcli")

    ma se devo controllare il CODfor della tabella fornitori, potrei chiamare la funzione con

    controlla_cod("fornitori","CODfor")

    e così via.

    Ma il codice cosi' funziona fino alla riga

    codice:
    DS.Tables(cd).Rows(0).Item(cpcod)
    in cui ottengo l'errore:

    Errore 34 L'accesso alla proprietà deve assegnare un valore alla proprietà o utilizzare quello corrente.


    Potreste aiutarmi ?
    Grazie
    Dopo anni di programmazione amatoriale in VBA, ho deciso di passare a VB.NET

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Non ho capito se vuoi tutti i valori di quella colonna o solo il primo valore.

    Così come l'hai scritta tu, vai a caricare un'intera tabella per leggere solo il primo valore di un campo.
    Che senso ha?


    Consiglio: eviterei il Dataset, per questo tipo di lavoro è molto meglio un DataReader.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    74
    Quote Originariamente inviata da gibra Visualizza il messaggio
    Non ho capito se vuoi tutti i valori di quella colonna o solo il primo valore.
    Si, in effetti mi serve solo il primo valore.

    Il mio problema è che non so come passare il nome di un campo e di una tabella ad una funzione.

    Ti sarei grato, inoltre, se potessi spiegarmi come comporre una sqlconnection.
    Ho cercato su internet, ma mi pare di capire che tale opzione non è valida se ci si deve connettere a database MDB (correggimi se sbaglio).

    Quindi come si fa ad usare un datareader (gli esempi che trovo fanno riferimento a sqlconnection)
    o mi sbaglio ?

    Grazie
    Ultima modifica di karug64; 28-05-2014 a 23:59
    Dopo anni di programmazione amatoriale in VBA, ho deciso di passare a VB.NET

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2012
    Messaggi
    106
    SqlConnection => db sql server
    OleDbConnection => db access

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Quote Originariamente inviata da karug64 Visualizza il messaggio
    Si, in effetti mi serve solo il primo valore.

    Il mio problema è che non so come passare il nome di un campo e di una tabella ad una funzione.

    Ti sarei grato, inoltre, se potessi spiegarmi come comporre una sqlconnection.
    Ho cercato su internet, ma mi pare di capire che tale opzione non è valida se ci si deve connettere a database MDB (correggimi se sbaglio).

    Quindi come si fa ad usare un datareader (gli esempi che trovo fanno riferimento a sqlconnection)
    o mi sbaglio ?

    Grazie
    Guarda il mio progetto che trovi nella firma (OleDB2008)

  6. #6
    io mi sono scritto la seguente funzione
    sicuramente non sara' il top, ma e' funzionante

    Public Function fldLegge(ByVal _Tabella As String, _
    ByVal _Campo As String, _
    ByVal _Key As String) As String

    REM costruisce la query
    pbl_cmdSql = New System.Data.OleDb.OleDbCommand
    pbl_cmdSql.Connection = pbl_connDbs
    pbl_cmdSql.CommandText = "SELECT " & _Campo & " AS Fld FROM " & _Tabella & " " & _
    "WHERE " & _Key
    pbl_sqlView = pbl_cmdSql.ExecuteReader
    pbl_retVal = pbl_Nullo
    While pbl_sqlView.Read()
    On Error Resume Next
    Dim _Return As String = pbl_sqlView("fld")
    On Error GoTo 0
    pbl_sqlView.Close()
    Return _Return
    End While
    End Function

    se il campo non viene trovato, la funzione restituisce il
    valore nullo
    spero possa servirti

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    74
    Grazie infinite ad entrambi per i suggerimenti proposti.

    Alla prossima.
    Dopo anni di programmazione amatoriale in VBA, ho deciso di passare a VB.NET

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.