| |
VB.NET - Ein- und UmsteigerTextbox - Eingabemöglichkeit entsprechend des gebundenen Datenbankfelds | | | Autor: fpsoft | Datum: 25.08.15 12:45 |
| Hallo,
gibt es eine einfache Möglichkeit (oder auch nicht so einfach), die Eingabemöglichkeit einer Textbox an die Größe des Datenbankfeldes zu binden (oder Eigenschaft setzen, wie auch immer)?
Ich habe das Problem, das ich die Textbox an ein Datenbankfeld gebunden habe
(Code: Textbox.DataBindings.Add("Text", DataSet.Tables("Tabellenname"), "Datenbankfeld")),
ich in der Textbox aber viel mehr Zeichen eingeben kann, als im Datenbankfeld zugelassen.
Beim Versuch zu speichern knallt es natürlich, wie löst man das in der Praxis?
Eigentlich eine ganz normale Notwendigkeit, konnte aber nichts darüber finden.
Für einen Tipp wäre ich echt dankbar.
Beste Grüße
(P.S. VB.NET-Anfänger)
____________________________________________
Nur die Dummen wissen alles selbst am besten.
Beitrag wurde zuletzt am 25.08.15 um 12:47:28 editiert. | |
Re: Textbox - Eingabemöglichkeit entsprechend des gebundenen Datenbankfelds | | | Autor: akop303 | Datum: 25.08.15 14:31 |
| In der .NET Version 4.5.1 (mit der ich gerade arbeite) gibt es bei dem TextBox eine Eigenschaft MaxLength.
Wenn es die Eigenschaft in der Version mit der du arbeitest nicht gibt, kannst du die Länge z.B. so begrenzen:
(ich muss zugeben, dass das nicht die perfekte Lösung ist.)
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles _
TextBox1.TextChanged
If TextBox1.Text.Length > 10 Then TextBox1.Text = _
TextBox1.Text.Substring(0, 10)
End Sub Oder du prüfst die Länge bevor du speicherst.
MfG
akop303
___________________________________________________________________________________________
Jeder, der behauptet das gesamte .NET-Framework zu kennen ist entweder verrückt oder Sheldon Cooper | |
Re: Textbox - Eingabemöglichkeit entsprechend des gebundenen Datenbankfelds | | | Autor: akop303 | Datum: 25.08.15 15:29 |
|
Probier es so:
'Dein Code
Textbox.DataBindings.Add("Text", DataSet.Tables("Tabellenname"), _
"Datenbankfeld")
' Danach diese Zeile
Textbox.MaxLength = DataSet.Tables("Tabellenname").Columns( _
"Datenbankfeld").MaxLength ___________________________________________________________________________________________
Jeder, der behauptet das gesamte .NET-Framework zu kennen ist entweder verrückt oder Sheldon Cooper | |
Re: Textbox - Eingabemöglichkeit entsprechend des gebundenen Datenbankfelds | | | Autor: akop303 | Datum: 26.08.15 09:27 |
| Hi, da brauche ich weitere Infos.
Mit welcher Version des .NET Frameworks arbeitest du?
Mit welcher Datenbank?
Wie kommen die Daten aus der Datenbank in das DataSet bzw. DataTable?
Gruß
akop303
___________________________________________________________________________________________
Jeder, der behauptet das gesamte .NET-Framework zu kennen ist entweder verrückt oder Sheldon Cooper | |
Re: Textbox - Eingabemöglichkeit entsprechend des gebundenen Datenbankfelds | | | Autor: akop303 | Datum: 27.08.15 11:06 |
| Hallo,
so ich habe es nachgestellt aber leider habe ich nur Access 2007. Trotzdem funktioniert das bei mir mit deinem QuellCode nicht. (Also vDSDataSet.Tables("Tabellenname").Columns("Datenbankfeld").MaxLength liefert -1).
Aber wenn ich die Tabelle mit dem DataReader fülle, kriege ich die Länge des Feldes zurück.
Also, wenn du den OleDbDataAdapter nicht unbedingt brauchst, kannst du es so versuchen:
Dim vDSDataSet As New System.Data.DataSet()
Dim vDbCmdDetail As New OleDbCommand("SELECT * FROM Tabellenname", vgConDb)
'Dim vDbAdpDetail As New OleDbDataAdapter(vDbCmdDetail)
'vDbAdpDetail.Fill(vDSDataSet, "Tabellenname")
' Hier die Tabelle mit dem DataReader laden. -->
Dim reader As OleDbDataReader = vDbCmdDetail.ExecuteReader()
Dim tab As New DataTable("Tabellenname")
tab.Load(reader)
reader.Close()
vDSDataSet.Tables.Add(tab)
'<--
TextBox1.DataBindings.Add("Text", vDSDataSet.Tables("Tabellenname"), _
"Datenbankfeld")
' MaxLength setzen
TextBox1.MaxLength = vDSDataSet.Tables("Tabellenname").Columns( _
"Datenbankfeld").MaxLength MfG
akop303
___________________________________________________________________________________________
Jeder, der behauptet das gesamte .NET-Framework zu kennen ist entweder verrückt oder Sheldon Cooper | |
Re: Textbox - Eingabemöglichkeit entsprechend des gebundenen Datenbankfelds | | | Autor: akop303 | Datum: 28.08.15 08:50 |
| Hi,
ob das technisch in Ordnung ist kann ich dir nicht sagen, DataAdapter habe ich das letzte mal noch in der ITA Ausbildung benutzt und die ist schon 5 Jahre her. Wenn du den benutzt um die Daten zu speichern, dann kannst du den Reader nicht verwenden.
Wenn es Funktioniert ist doch alles gut. Oder?
MfG
akop303
___________________________________________________________________________________________
Jeder, der behauptet das gesamte .NET-Framework zu kennen ist entweder verrückt oder Sheldon Cooper | |
Re: Textbox - Eingabemöglichkeit entsprechend des gebundenen Datenbankfelds | | | Autor: akop303 | Datum: 29.08.15 17:29 |
| Du könntest das ja in eine Funktion Auslagern.
Machst einfach ein neues Modul und dort ne Public Sub. Alternativ kannst du dein eigenes TextBox schreiben, der so was unterstützt.
MfG
akop303
___________________________________________________________________________________________
Jeder, der behauptet das gesamte .NET-Framework zu kennen ist entweder verrückt oder Sheldon Cooper | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevDTA 3.0 Pro
SEPA mit Kontonummernprüfung
Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Weitere Infos
|