vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Textbox - 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.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Textbox - Eingabemöglichkeit entsprechend des gebundenen Datenbankfelds 
Autor: fpsoft
Datum: 25.08.15 15:01

Hi,

danke Dir für die Antwort aber ich denke da eher an eine Lösung, indem man z.B. beim binden der Textbox die Eigenschaft MaxLength mit setzt (oder etwas noch besseres).

Ich will ja im Code (normal) gar nichts weiter prüfen, wenn das Datenbankfeld 10 Zeichen erlaubt soll der Anwender die Möglichkeit haben, 10 Zeichen in der Textbox einzugeben.

Gruß
fpsoft

____________________________________________
Nur die Dummen wissen alles selbst am besten.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Textbox - Eingabemöglichkeit entsprechend des gebundenen Datenbankfelds 
Autor: fpsoft
Datum: 25.08.15 22:29

Hi,

sieht eigentlich gut aus, leider haben bei mir alle Felder den Wert -1!?

Ist das vielleicht mein eigentliches Problem?

Besten Gruß
fpsoft

____________________________________________
Nur die Dummen wissen alles selbst am besten.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Textbox - Eingabemöglichkeit entsprechend des gebundenen Datenbankfelds 
Autor: fpsoft
Datum: 26.08.15 18:58

Hallo,

hier die Infos:

- .NETFramework V 4.0
- Access Datenbank (müßte Version 2000 sein)
- DB Connection
vgConDb = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data" & _
  "Source=PfadDB_NameDB;Jet OLEDB:Database Password=Kennwort")
vgConDb.Open()
- Dataset
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")
TKomm_Test.DataBindings.Add("Text", vDSDataSet.Tables("Tabellenname"), _
  "Datenbankfeld")
Gruß
fpsoft

____________________________________________
Nur die Dummen wissen alles selbst am besten.

Beitrag wurde zuletzt am 26.08.15 um 19:06:13 editiert.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Textbox - Eingabemöglichkeit entsprechend des gebundenen Datenbankfelds 
Autor: fpsoft
Datum: 27.08.15 20:26

Hi,
ganz vielen Dank für Deine Mühe/Hilfe.
Über den Adapter speichere ich aber für die Lösung über die manuelle Zuweisung von MaxLength habe ich eine ganz einfache Möglichkeit gefunden:
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")
vDbAdpDetail.FillSchema(vDSDataSet.Tables("Tabellenname"), SchemaType.Mapped)
TKomm_Test.DataBindings.Add("Text", vDSDataSet.Tables("Tabellenname"), _
  "Datenbankfeld")
TKomm_Test.MaxLength = vDSDataSet.Tables("Tabellenname").Columns( _
Datenbankfeld").MaxLength
Aber ob das technisch so OK ist?!

Ich hatte allerdings auf eine automatische und damit nicht so Fehler anfällige Lösung gehofft.

Gruß
fpsoft

____________________________________________
Nur die Dummen wissen alles selbst am besten.

Beitrag wurde zuletzt am 27.08.15 um 20:28:48 editiert.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Textbox - Eingabemöglichkeit entsprechend des gebundenen Datenbankfelds 
Autor: fpsoft
Datum: 28.08.15 15:17

Hallo,

funktioniert ist aber meiner Meinung keine schöne Lösung (da manuell). Das Problem setzt sich in Tabellen ja fort, da muss dann jede Spalte gesetzt werden.

Vielleicht ergibt sich ja noch etwas.

Beste Grüße
fpsoft

____________________________________________
Nur die Dummen wissen alles selbst am besten.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel