DropDown mit Daten aus MySQL DB füttern
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 33 Antworten in diesem Thema. Der letzte Beitrag () ist von samson.
-
-
Bei dieser Art von Combobox-Einsatz braucht man den Valuemember garnet zu belegen.
Den selektierten Datensatz kann man ausBindingSource.Current
abrufen. Jedenfalls, wenn man ein typisiertes Dataset verwenden täte.
So kannste aber mit auch sowas ähnliches abrufen wie eine DataRow. -
@shaebich dabei kommt dann immer als Wert 'id' bei raus.
@ErfinderDesRades Das mit dem Dataset hab ich versucht, leider bisher noch nicht hinbekommen...
Ich geb aber so schnell nicht auf.Nein! Doch! OHH! -
-
Moin Moin Zusammen...
nun ist einige Zeit ins Land gegangen,... Und ich bin immernoch am "basteln"... Leider immernoch ohne Erfolg...
Ich hab die ersten 30 Seiten der Suchergebnisse von Google durchprobiert,... ohne Erfolg...
Hier nun mein aktueller Stand und mein Problem...
VB.NET-Quellcode
- Dim MysqlConn As MySqlConnection
- Dim COMMAND As MySqlCommand
- Dim READER As MySqlDataReader
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Button2.Enabled = False
- PictureBox1.Visible = False
- MysqlConn = New MySqlConnection
- MysqlConn.ConnectionString = "server=ipadresse;uid=user;pwd=passwort;database=vb_test;port=3306;"
- Try
- MysqlConn.Open()
- Label2.Text = "Datenbankverbindung: OK"
- Dim Query As String
- Query = "SELECT * FROM vb_test.ms_kunden WHERE id = '1' ORDER BY matchcode"
- COMMAND = New MySqlCommand(Query, MysqlConn)
- READER = COMMAND.ExecuteReader
- While READER.Read
- 'Dim matchcode = READER.GetString("matchcode")
- 'ComboBox1.Items.Add(matchcode)
- TextBox1.Text = CStr(READER.GetInt32(CInt("matchcode"))) 'andere Schreibweisen versucht... Ohne Erfolg (READER.GetInt32(CInt("matchcode")) oder READER.GetInt32("matchcode") oder
- End While
- MysqlConn.Close()
- Catch ex As MySqlException
- MessageBox.Show(ex.Message)
- Finally
- MysqlConn.Dispose()
- End Try
- End Sub
Anstatt TextBox1.Text = READER.GetString("matchcode")
habe ich schon das versucht...
Beim Debuggen kommt die Fehlermeldung die ich angehängt habe...
Vielleicht kann mir ja jemand dabei helfen...
Danke schon mal
NACHTRAG!
Option Strict On ist aktiv...
Die Frage die sich mir dabei stellt ist lediglich, woher nimmt er Zahlen... Ich frage in der MySQL-DB doch einen "Namen" ab...
Nein! Doch! OHH!Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „samson“ ()
-
Wie bitte sehr soll man "matchcode" in eine Ganzzahl konvertieren? Da hat doch VB keine Ahnung wie das gehen soll. Ich denke mal selbst du hast keine Ahnung wie das gehen soll. Oder wie stellst du dir das vor. Mach mal aus "matchcode" eine Ganzzahl. Wenn du irgendwo ein Feld mit Namen matchcode definiert hast, dann musst du die Anführungszeichen weglassen. Ansonsten wird das als String gewertet.
-
@thefiloe Das wird aber dennoch nix...
Da VB ebenfalls nicht kapiert warum ich da was ausgeben möchte...
Nehme ich die Anführung raus, meldet VB das matchcode nicht deklariert wurde...Nein! Doch! OHH! -
-
@HamburgerJungeJr geht, jedoch kommt nur der 1. Datensatz.
Wenn ich in die ComboBox reinklicke, zeigt er garnichts an, klicke ich nochmal,
nimmt er den 1. Datensatz...
Wie wenn es weiße Schrift wäre...Nein! Doch! OHH! -
-
Sorry! Hab den Fehler gefunden,... 1. wie @shaebich schon geschrieben hatte,... vergessen den Limit 1 weg zu nehmen bzw. den einen datensatz nur zu laden.
2. Fehler lag irgendwo in der ComboBox... Weiße Schrift auf weißem Hintergrund... Warum auch immer... daran hatte ich nichts verändert...
nach nun weiteren 9 stunden googlen bin ich auch fündig geworden...
VB.NET-Quellcode
- Private Sub FillComboBox()
- Dim conn As New MySqlConnection
- Dim myCommand As New MySqlCommand
- Dim myAdapter As New MySqlDataAdapter
- Dim dsToBeFilled As New DataSet
- Dim SQL As String
- conn = New MySqlConnection()
- conn.ConnectionString = "server=localhost;uid=test;pwd=test;database=vb_test;port=3306;"
- SQL = "SELECT * FROM ms_kunden"
- Try
- conn.Open()
- myCommand.Connection = conn
- myCommand.CommandText = Sql
- myAdapter.SelectCommand = myCommand
- myAdapter.Fill(dsToBeFilled)
- For Each row As DataRow In dsToBeFilled.Tables(0).Rows
- ComboBox1.Items.Add(row.Item("kdnr").ToString() & " - " & row.Item("matchcode").ToString())
- Next
- Catch myerror As MySqlException
- MessageBox.Show("Error connecting to the database: " & myerror.Message)
- End Try
- End Sub
ich komme aber nicht auf die kdnr, das ich diese weiter verarbeiten kann...
Kann mir da nochmal wer helfen?Nein! Doch! OHH! -
samson schrieb:
Hab den Fehler gefunden,... vergessen den Limit 1 weg zu nehmen
In Deinem Posting Nr.25 gibts kein LIMIT, nur eine Bedingung, also hast Du es leider nicht verstanden .
Trotzdem weiterhin viel Spaß beim Raten.
Wie wäre es mit einem nützlichen Buch für Grundlagen?
Es wäre für Dich befriedigender, wenn Du verstehst was Du tust.
-
Naja kein plan was du 9 Stunden lang bei google gesucht hast. Aber nach ca. 2min und 2 Klicks komm ich auf die Seite:
dotnetspider.com/resources/431…ate-delete-Operation.aspx
Dort ist eig. alles aufgeführt was man braucht. Wenn du jetzt noch das DataGridView durch deine ComboBox austauscht, hast du die Member in der ComboBox...:D
So schwer kanns doch nicht sein. Bekommst du die richtigen Werte mit deiner Abfrage? ... Eventuell solltest du dir auch SQL anschauen.
ist nicht alles was man können muss ...
samson schrieb:
For Each row As DataRow In dsToBeFilled.Tables(0).Rows
ComboBox1.Items.Add(row.Item("kdnr").ToString() & " - " & row.Item("matchcode").ToString())
Next
Wie wäre es, wenn du diesen Part eventuell einfach mal an ein DataGridView bindest um zu schaun ob du überhaupt Werte aus deinem SQL String bekommst? Anstatt wie wild 2 Strings miteinander verknüpfen zu wollen und diese in einer ComboBox auszugeben.
-
Moin Moin,
erstmal danke an alle... Ich habe eine annehmbare Lösung hinbekommen...
Hier der Code von meinem Projekt...
VB.NET-Quellcode
- Imports System.Net
- Imports System.Net.Mail
- Imports MySql
- Imports MySql.Data
- Imports MySql.Data.MySqlClient
- Public Class Form1
- Public filename As String = Nothing
- Public filetarget As String = Nothing
- Public kdnr As String = Nothing
- Dim MysqlConn As MySqlConnection
- Dim COMMAND As MySqlCommand
- Dim READER As MySqlDataReader
- Dim WithEvents Upload As Net.WebClient
- Private Sub UploadFTP(ByVal Datei As String, _
- ByVal Dateiname As String, _
- ByVal Ftp As String, _
- ByVal Benutzername As String, _
- ByVal Passwort As String)
- ' WebClient
- Upload = New Net.WebClient
- ' URL mit Zieldatei
- Dim url As String = Ftp & IIf(Ftp.EndsWith("/"), "", "/") & Dateiname
- ' Anmeldedaten am FTP-Server
- Upload.Credentials = New Net.NetworkCredential(Benutzername, Passwort)
- ' Datei asnychron uploaden
- Upload.UploadFileAsync(New Uri(url), Datei)
- End Sub
- Private Sub Upload_UploadFileCompleted(ByVal sender As Object, _
- ByVal e As System.Net.UploadFileCompletedEventArgs) Handles Upload.UploadFileCompleted
- MysqlConn = New MySqlConnection
- MysqlConn.ConnectionString = "server=server;uid=user;pwd=passwort;database=db;port=3306;"
- Try
- MysqlConn.Open()
- ToolStripStatusLabel1.Text = "Datenbankverbindung: OK"
- Dim Query As String
- Query = "INSERT INTO ms_archiv (kdnr, file) VALUES ('" + kdnr + "', '" + filename + "')"
- COMMAND = New MySqlCommand(Query, MysqlConn)
- READER = COMMAND.ExecuteReader
- MysqlConn.Close()
- Catch ex As MySqlException
- MessageBox.Show(ex.Message)
- Finally
- MysqlConn.Dispose()
- End Try
- MsgBox("Datei an KMS übergeben", MsgBoxStyle.Exclamation, "Information")
- ProgressBar1.Visible = False
- lblProgress.Visible = False
- Button1.Enabled = False
- End Sub
- Private Sub Upload_UploadProgressChanged(ByVal sender As Object, _
- ByVal e As System.Net.UploadProgressChangedEventArgs) Handles Upload.UploadProgressChanged
- ProgressBar1.Value = e.ProgressPercentage
- ProgressBar1.Refresh()
- lblProgress.Text = e.ProgressPercentage & "%"
- End Sub
- Private Sub FillComboBox()
- Dim conn As New MySqlConnection
- Dim myCommand As New MySqlCommand
- Dim myAdapter As New MySqlDataAdapter
- Dim dsToBeFilled As New DataSet
- Dim SQL As String
- conn = New MySqlConnection()
- conn.ConnectionString = "server=server;uid=user;pwd=passwort;database=db;port=3306;"
- SQL = "SELECT * FROM ms_kunden"
- Try
- conn.Open()
- myCommand.Connection = conn
- myCommand.CommandText = SQL
- myAdapter.SelectCommand = myCommand
- myAdapter.Fill(dsToBeFilled)
- For Each row As DataRow In dsToBeFilled.Tables(0).Rows
- ComboBox1.Items.Add(row.Item("matchcode").ToString())
- Next
- ToolStripStatusLabel1.Text = "Datenbankverbindung: OK"
- Catch myerror As MySqlException
- MessageBox.Show("Error connecting to the database: " & myerror.Message)
- End Try
- End Sub
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Button1.Enabled = False
- Button2.Enabled = False
- PictureBox1.Visible = False
- lblProgress.Visible = False
- FillComboBox()
- End Sub
- Public Function scanImage() As String
- 'Pfad zur Temp Datei des erfassten Bildes
- Dim strTempImagePath As String = String.Empty
- 'Windows GUI zur Interaktion mit dem Gerät
- Dim wiaDialog As New WIA.CommonDialog
- 'Variable für das erfasste Bild
- Dim wiaImage As WIA.ImageFile = Nothing
- Try
- 'Aufruf der Windows GUI zur Interaktion mit dem Gerät,
- 'rückgabe ist das erfasste Bild
- wiaImage = wiaDialog.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType, , , , False, )
- Catch ex As Exception
- MsgBox("Ein Fehler ist aufgetreten! Überprüfen Sie ob das Gerät Eingeschaltet und angeschlossen ist." & Environment.NewLine & Environment.NewLine & ex.Message)
- End Try
- If Not wiaImage Is Nothing Then
- 'Bild temporär Speichern
- Dim rnd As New Random
- Dim ZufallsZahl As Integer = rnd.Next(12, 600000000)
- filename = "tempfile_" & ZufallsZahl & ".jpg"
- filetarget = "C:\Temp\tempfile_" & ZufallsZahl & ".jpg"
- wiaImage.SaveFile(filetarget)
- PictureBox1.Visible = True
- PictureBox1.Image = New Bitmap(filetarget)
- Button2.Enabled = True
- Else
- MsgBox("Es wurde kein Bild erfasst!", MsgBoxStyle.Exclamation, "Information")
- End If
- Return strTempImagePath
- End Function
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- scanImage()
- PictureBox1.Visible = True
- End Sub
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- ProgressBar1.Value = 0
- ProgressBar1.Visible = True
- Dim sFile As String = "C:\Temp\" & filename
- Dim sDestFile As String = filename
- Dim sServer As String = "ftp://domain.de/scans"
- Dim sUser As String = "user"
- Dim sPwd As String = "passwort"
- UploadFTP(sFile, sDestFile, sServer, sUser, sPwd)
- PictureBox1.Visible = False
- Button2.Enabled = False
- End Sub
- Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
- End Sub
- Private Sub ComboBox1_TextChanged(sender As Object, e As System.EventArgs) Handles ComboBox1.TextChanged
- Button1.Enabled = True
- MysqlConn = New MySqlConnection
- MysqlConn.ConnectionString = "server=server;uid=user;pwd=passwort;database=db;port=3306;"
- Try
- MysqlConn.Open()
- ToolStripStatusLabel1.Text = "Datenbankverbindung: OK"
- Dim Query As String
- Query = "SELECT kdnr FROM ms_kunden WHERE matchcode = '" & ComboBox1.Text & "'"
- COMMAND = New MySqlCommand(Query, MysqlConn)
- READER = COMMAND.ExecuteReader
- While READER.Read
- TextBox1.Text = READER.GetInt32(0)
- kdnr = TextBox1.Text
- End While
- MysqlConn.Close()
- Catch ex As MySqlException
- MessageBox.Show(ex.Message)
- Finally
- MysqlConn.Dispose()
- End Try
- End Sub
- End Class
Danke an alle...Nein! Doch! OHH!
-
Tags
-
Ähnliche Themen
-
7 Benutzer haben hier geschrieben
- samson (14)
- shaebich (6)
- simpelSoft (4)
- HamburgerJungeJr (4)
- ErfinderDesRades (3)
- haVok4.Purplehaze (2)
- thefiloe (1)