Laden...

Combobox - Neuer Eintrag nach Rückfrage

Erstellt von micha_s vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.631 Views
M
micha_s Themenstarter:in
2 Beiträge seit 2009
vor 14 Jahren
Combobox - Neuer Eintrag nach Rückfrage

Zunächst einmal Hallo,

mein erster Post in diesem tollen Forum, seit kurzem beschäftige ich mich mit C# und habe schon einiges hier lernen können.

Zu meinem Problem:

ich habe eine Combo-Box mit einer Access-Datenbank (genauer einer Tabelle) per Databinding verbunden und lasse die Combo-Box befüllen. Das funktioniert auch...

Nun würde ich gerne dem Anwender erlauben, dass er einen neuen Wert in die Combo-Box eintragen kann, in dem Moment wenn er nun das Element verlassen möchte soll eine Nachfrage kommen, ob der Wert in die Datenbank übernommen werden soll. Wenn ja, dann soll der Wert in die Datenbank geschrieben werden.

Meine Fragen:

  • wie kann ich prüfen, ob der eingegebene Wert in der Tabelle vorhanden ist?
  • ich kann zwar den Wert auslesen, wie kann ich aber den neuen Wert in die Tabelle schreiben?

LG und Danke im voraus...

Michael

2.223 Beiträge seit 2005
vor 14 Jahren

Hallo micha_s und Herzlich Willkommen hier im Forum,

deine Fragen zielen ja eher in Richtung SQL allgemein ab,

zu testen ob ein wert in der Datenbank bereits existiert, könntest Du zb

ein


SELECT * FROM [TABLE] WHERE [FIELD] = [VALUE];

ausführen und dann zb ein Count auf die Rows oder halt nen count im SQL Statement.

und zum einfügen wäre es dieser Code


INSERT INTO [TABLE] ([FIELDS]) VALUES ([VALUES]);

eine recht Gute Hilfe an dieser Stelle wäre natürlich Google

Herzliche Grüße
Lars

5.299 Beiträge seit 2008
vor 14 Jahren

Ich interpretiere die Frage mal als eine, wie das mit Databinding gehen könnte.
wusste ich auch nicht genau, habich jetzt ausprobiert, "leider" in VB.Net:




   Private Sub ComboBox1_Validating(ByVal sender As Object, ByVal e As CancelEventArgs) _
         Handles ComboBox1.Validating
      If ComboBox1.SelectedValue Is Nothing Then
         Dim s = ComboBox1.Text
         Dim row = Tab_Kunden_KatBindingSource.AddNewX(Of AuftraegeDts.Tab_Kunden_KatRow)()
         row.Kat_Bezeichnung = s
      End If
   End Sub

BindingSource.AddNewX() ist eine Extension, die BindingSource.AddNew() wrappert und als typisierte DataRow returnt.


   <System.Diagnostics.DebuggerStepThrough()> _
   <Extension()> _
   Public Function AddNewX(Of T As DataRow)(ByVal subj As BindingSource) As T
      Return DirectCast(DirectCast(subj.AddNew(), DataRowView).Row, T)
   End Function

Das mit der MsgBox habich jetzt weggelassen, aus Faulheit.

(Ich hoff, du blickst trotzdem durch)

Achso: Combobox1 ist gebunden,

DataSource = Tab_Kunden_KatBindingSource
DisplayMember = Tab_Kunden_Kat.Kat_Bezeichnung
ValueMember = Tab_Kunden_Kat.Kat_ID

SelectedValue = Tab_Kunden.Kat_ID

und es geht darum, Kunden in Kategorien einzuteilen

Der frühe Apfel fängt den Wurm.

M
micha_s Themenstarter:in
2 Beiträge seit 2009
vor 14 Jahren

Hallo nochmal,

danke für den netten Empfang und die beiden Antworten, geht ja wirklich fix hier.

Ich war mir unsicher, ob sich die Anfrage eher auf die "Datentechn." oder die Windowsform (wegen der Combobox) bezieht, danke für das Verschieben.

Zum Thema SQL:

die Statements sind mir bekannt, aber ich weiss nicht wie ich die Rückgabe aus einem Statement weiter verarbeiten kann, wie der von Dir angesprochene Count auf die Rows.

Mit Google habe ich schon geschaut, aber kam da nicht weiter. Ich werde weiter probieren.

"BindingSource.AddNewX() ist eine Extension, die BindingSource.AddNew() wrappert und als typisierte DataRow returnt"

das kann ich mit meinen geringen Kenntnissen noch nicht verarbeiten, trotzdem ganz herzlichen Dank auch für den Lösungsansatz.

So, dann probiere ich mal weiter.

Gruss
Micha_S

5.299 Beiträge seit 2008
vor 14 Jahren

Für untiges müsstest du aber wissen, wie man Comboboxen DataBindet, und im Sample hat das DGV auch eine ComboboxColumn, und die PrimKey-Generierung erfolgt im Client (erleichterts Abspeichern) und so Zeugs.

Gugge evtl. auch DataBinding-Uebungen und "Datenbank in 10 Minuten" auf Movie-Tuts

edit: kennst du schon die anderen Möglichkeiten der Informationsgewinnung , neben google ?

Der frühe Apfel fängt den Wurm.