none
vb.net e database --- massimo dei caratteri da inserire RRS feed

  • Domanda

  • avrei questo tipo di problema:

    sto cercando di convertire un mio programma in vb6 in vb.net

    ho già un database access con tabelle e records completi, e per motivi pratici non vorrei modificarne le caratteristiche.

    il mio problema è che alcuni campi prevedono un numero massimo di caratteri (esempio c.a.p. solo 5 caratteri ecc) 

    di conseguenza vorrei che nella textbox per inserire i dati non si possano inserire più di "x" (5) caratteri.

    usando TabelleDataSet leggo la MaxLength e la inserisco nella textbox.MaxLength >>>> tutto ok. (usando le istruzioni da codice)

    problema ...... cosi facendo se modifico la dimensione del campo (per motivi di adeguamento dei dati) e da 5 caratteri porto a 10 i caratteri massimi accettabili dal database (es, i cap non saranno più di 5 caratteri ma 10) il riferimento alla TabelleDataSet da cui leggo MaxLength rimane sempre la vecchia (5 caratteri) e non si aggiorna.

    C'è una soluzione al problema che non sia di intervenire sulla TabelleDataSet modificando il dato manualmente per poi dover ricompilare il progetto ??

    domenica 25 gennaio 2015 15:00

Risposte

  • Ho risolto ..... utilizzando OleDbDataReader ........

    Imports ADOX
    Imports System.Data.OleDb

    Public Class Form1
        Dim Tabella As String = "TA_FISSI" '(nome della tabella)

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Dim DBComando As OleDbCommand
       Dim Path As String = "c:\AmbiArchivio\Tabelle.mdb" '(indirizzo del database)
       Dim DB = New OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & Path)

            Dim schemaTable As DataTable
            DB.Open()
            DBComando = New OleDbCommand("SELECT * FROM " & Tabella, DB)
            Dim oledbReader As OleDbDataReader = DBComando.ExecuteReader()
            schemaTable = oledbReader.GetSchemaTable()
            For Each myField In schemaTable.Rows
                MsgBox(myField(1).ToString() & " = " & myField(2).ToString() & " = " & myField(3).ToString())

            ' (myField(1) tra parentesi la posizione del dato ..... 1 posizione d'ordine -  2 massimo caratteri - 3 precisione .. ecc)

            Next
            DB.Close()
        End Sub
    End Class

    lunedì 26 gennaio 2015 12:26