| |
| In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.
Hinweis: Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden! | Fragen zu Tipps & Tricks und Workshops im vb@rchivTipp 1952: Doppelte Einträge einer (Combo-)Listbox löschen | | | Autor: oe* | Tipp anzeigenDatum: 10.02.09 21:18 |
| Hallo Dieter,
ich habe den Code in meine Form (VB2005 Express) kopiert und erhalte den Fehler 1:
Der Name "DestinctArray" wurde nicht deklariert.
Im Tab der Funktionen erhalte ich den Fehler 2:
Der Typ "List" ist nicht definiert.
Was mache ich falsch? Würdest du mir bitte helfen. Danke.
Schöne Grüße
oe* | |
Re: Doppelte Einträge einer (Combo-)Listbox löschen | | | Autor: oe* | Datum: 10.02.09 21:35 |
| Vielen Dank für deine schnelle Antwort.
Ich habe nun die Funktion aus dem Tab Funktionen in die Form1 (hier wird die combobox gefüllt) verschoben. Der Fehler 1 ist nun weg, der Fehler 2 ist geblieben. List wird nicht erkannt.
Schöne Grüße
oe*
Dieter schrieb:
Zitat: | | Du musst die Funktion "DistinctArray" aus dem Tipp
ebenfalls mit in den Code einfügen. | |
| |
Re: Doppelte Einträge einer (Combo-)Listbox löschen | | | Autor: oe* | Datum: 11.02.09 20:44 |
| oe* schrieb:
Zitat: | | Vielen Dank für deine schnelle Antwort.
Ich habe nun die Funktion aus dem Tab Funktionen in die Form1
(hier wird die combobox gefüllt) verschoben. Der Fehler 1 ist
nun weg, der Fehler 2 ist geblieben. List wird nicht erkannt.
Schöne Grüße
oe*
Dieter schrieb:
Zitat: | | Du musst die Funktion
"DistinctArray" aus dem Tipp
ebenfalls mit in den Code einfügen. | |
| |
Ich bekomms nicht hin, List() wird nicht erkannt. Gibts das erst ab VS08?
Ich habe den Code jetzt in die Private Sub reinkopiert in der die combobox an eine DataSource gebunden wird. Ist das schon falsch?
Die Funktion ist auf der gleichen Form. Leider wird der Typ List () nicht erkannt.
Muss ich noch irgenwo was deklarieren?
Ich würde mich über jeden Tipp sehr freuen. Danke schon mal und schöne Grüße | |
Re: Doppelte Einträge einer (Combo-)Listbox löschen | | | Autor: oe* | Datum: 12.02.09 11:56 |
| Dieter schrieb:
Zitat: | | Das List(Of) Objekt gibt es seiz VB2005. | |
Ok, wenns nicht erkannt wird, muss ich dann was nachladen oder einen Verweis hinzufügen?
Ich verwende VB2005 Express.
Schöne Grüße
oe* | |
Re: Doppelte Einträge einer (Combo-)Listbox löschen | | | Autor: Caddy | Datum: 12.02.09 23:12 |
| Hi Ich habe folgenden Code mal geschrieben der ohne das Array auskommt. Allerdings sollte die Listbox/Combobox aus Sort=true stheen:
For x = 1 To ComboBox1.Items.Count
If x = ComboBox1.Items.Count Then Exit For
If ComboBox1.Items.Item(x).ToString = ComboBox1.Items.Item(x - _
1).ToString Then
ComboBox1.Items.RemoveAt(x - 1)
x = x - 1
End If
Next Gruss Caddy | |
Re: Doppelte Einträge einer (Combo-)Listbox löschen | | | Autor: oe* | Datum: 13.02.09 14:04 |
| Hallo Caddy,
vielen Dank für deinen Tipp.
Ich erhalte folgende Fehlermeldung:
Die Items-Auflistung kann nicht geändert werden, wenn die DataSource-Eigenschaft festgelegt ist.
Meine Combobox ist an ein DataSet gebunden. Kann das der Grund sein?
Ist es überhaupt möglich aus einer gebundenen Combobox die Doppelten zu entfernen?
Bin für jeden Hinweis dankbar.
Schöne Grüße | |
Re: Doppelte Einträge einer (Combo-)Listbox löschen | | | Autor: Caddy | Datum: 13.02.09 15:31 |
| Hi, wenn deine Combobox an ein Dataset gebunden ist, funktioniert das nicht. Meine Listbox war ungebunden. In deinem Fall solltest du schon die doppelten Einträge ausblenden im Datasource.
Gruss Caddy | |
Re: Doppelte Einträge einer (Combo-)Listbox löschen | | | Autor: oe* | Datum: 13.02.09 16:21 |
| Caddy schrieb:
Zitat: | | Hi, wenn deine Combobox an ein Dataset gebunden ist,
funktioniert das nicht. Meine Listbox war ungebunden. In
deinem Fall solltest du schon die doppelten Einträge
ausblenden im Datasource. | |
ok, ich versuchs mal.
Ich habe mir eine Access-DB ins DataTable/Dataset geladen und dann eine Spalte an die Combobox gebunden. Ansicht mit Datagridview.
Kann ich die Doppelten im Dataset unterdrücken (und an Combo binden) und mir trotzdem alle Zeilen im Datagridview darstellen lassen?
Ich bin leider VB.NET Anfänger, würde mich aber gerne reinarbeiten. Ein Tipp obs schon eine Funktion gäbe, vielleicht in der DataTable, oder wo ich ansetzen könnte wäre super.
Vielen Dank,
schöne Grüße
oe* | |
Re: Doppelte Einträge einer (Combo-)Listbox löschen | | | Autor: Caddy | Datum: 13.02.09 16:34 |
| Machst du es mit ADO ? SQL? Ich würde es per Code anbinden und mit Hilfe einer SQL Abfrage (DISTINCT) anbinden. http://sql.1keydata.com/de/sql-distinct.php
Gruss Caddy | |
Re: Doppelte Einträge einer (Combo-)Listbox löschen | | | Autor: oe* | Datum: 13.02.09 16:56 |
| Caddy schrieb:
Danke für deine schnelle Antwort. Mir ist leider überhaupt nicht klar, wo zwischen Anbindung Datagrid und Anbindung Combo noch die SQL Abfrage reinpassen könnte . Ich fülle und binde die Combo so:
Private dbpath As String = System.IO.Path.Combine(Application.StartupPath, _
"DB.mdb")
Private conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data" & _
"Source=" & dbpath & ";")
Private sql As String = "SELECT * FROM tabelle;"
Private cmd As New OleDbCommand(sql, conn)
Private da As New OleDbDataAdapter(cmd)
Private ds As New DataSet
Private Sub LOAD_Table()
conn.Open()
ds.Clear()
da.Fill(ds, "tabelle")
'Datagrid anbinden
DataGrid1.SetDataBinding(ds, "tabelle")
'Combobox anbinden
cbo1.DataSource = ds
cbo1.DisplayMember = "tabelle.Name"
... Ich hoffe ich habe mich vorhin nicht falsch ausgedrückt. Kann ich bei dieser Anbindung die Doppelten unterdrücken (nur in Combo)? SELECT DISTINCT wäre mir sympathisch ..
Schöne Grüße
oe* | |
Re: Doppelte Einträge einer (Combo-)Listbox löschen | | | Autor: Caddy | Datum: 13.02.09 19:05 |
| Hallo, kannst du mir kurz beschreiben, was dein Code bewirken soll, bzw. in welchem Zusammenhang das Datagrid und die Combobox stehen?
Gruss Caddy | |
Re: Doppelte Einträge einer (Combo-)Listbox löschen | | | Autor: oe* | Datum: 13.02.09 19:42 |
| Caddy schrieb:
Zitat: | | Hallo, kannst du mir kurz beschreiben, was dein Code bewirken
soll, bzw. in welchem Zusammenhang das Datagrid und die
Combobox stehen? | |
Hallo Caddy,
vielen Dank für dein Interesse.
Auf der Form sind neben der Datagridview und der combo noch Textfelder als Eingabefelder plaziert. Die Combo enthält Namen von Personen, die Textfelder enthalten personenbezogene Daten und Messwerte. Die Anwendung dient als Eingabeformular einer weiteren Anwendung. Sind alle Eingabefelder gefüllt, werden diese Daten als neuer Datensatz im Dataset bzw. der Access-DB gespeichert (INSERT). Im Datagridview ist der Datensatz sofort zu sehen.
Möchte man einen neuen Datensatz eingeben ...
... kann man komfortabel, wenn der Namen schon vorhanden ist, z.B. auf die entsprechende Zelle im Datagridview clicken oder per AutoFill in der Combo1 (Name) den Namen "holen" und die Grunddaten wie Name, Geburtsdatum, Geschlecht werden schon mal eingetragen.
... andernfalls muss man Name, Geburtsdatum, Geschlecht, ... erst eingeben, dann die Messwerte.
Inzwischen habe ich das Problem, das nach ein paar Dutzend Personen, und dazu jeweils rd. 50 Datensätzen pro Person, ich mich so langsam zu Tode scrolle (sowohl im Datagridview als auch in der Combobox).
Da wäre es optimal, wenn ich die Doppelten aus der Combo entfernen könnte. Als der Tipp hier im vbarchiv kam, bin ich fast nen Meter vor Freude hochgesprungen.
Auch für eine andere Lösungsidee, wie man schnell zu dem Namen navigieren könnte, wäre ich sehr dankbar.
Schöne Grüße
oe* | |
Re: Doppelte Einträge einer (Combo-)Listbox löschen | | | Autor: Caddy | Datum: 13.02.09 22:24 |
| Hallo
ich habe mal unter VB 6 ein Programm mit Hilfe von DAO geschrieben. Es ist eine Filmdatenbank mit AUsleih und Bestellfunktion. Jetzt trat das Problem auf, dass manche DVDs mehrere Filme beinhalteten. Da man so manchmal zwangsweise mehrer Filme ausleiehen musste, war ja klar. Nur wurde für jeden Film ein Eintrag in der DB hinterlegt. So kam es vor dass eine Person in der Datenbank doppelt drin stand.
Sprich
FilmNr Titel Index bestellt von
1 Text1 1 Person1
2 Text2 2 Person1
3 Text3 2 Person1
So wäre nun Person1 dreimal in der Comboboxauswahl aufgetaucht. von daher habe ich das so realisiert:
Me.Text = Video.lblTitel.Text
DateTimePicker1.Value = Now
ComboBox1.Items.Clear()
ComboBox1.Text = ""
DBEngineDAO = New dao.DBEngine
ws1 = DBEngineDAO.Workspaces(0)
db1 = ws1.OpenDatabase(Video.ToolStripMenuItem5.Text & "\" & _
Video.ToolStripMenuItem8.Text & ".mdb")
sqlstate = "Select * from Bestellung where Index = " & Video.lblindex( _
1).Text & " and Erledigt ='Nein'"
rsdate = db1.OpenRecordset(sqlstate)
While Not rsdate.EOF
ComboBox1.Items.Add(rsdate("Name").Value)
rsdate.MoveNext()
End While
For x = 1 To ComboBox1.Items.Count
If x = ComboBox1.Items.Count Then Exit For
If ComboBox1.Items.Item(x).ToString = ComboBox1.Items.Item(x - _
1).ToString Then
ComboBox1.Items.RemoveAt(x - 1)
x = x - 1
End If
Next In der SQL-Anweisung hätte ich nun auch die Distinct-Variante nehmen können. Aber ich habe es so gelassen.
SQL= "Select Distinct Name from Bestellung where Index = " & Video.lblindex(1).Text & " and Erledigt ='Nein'"
Wie du siehst habe ich es in VB.Net übertragen aber die DAO-Stil beibehalten. ( Ich wollte nicht 6 Monate Arbeit wegwerfen:-D)
Ich habe aber alle meine Controls ungebunden gelassen, somit blieb mir mehr Freiheit beim Programmieren.
Hoffe ich konnte dir etwas helfen - bei Fragen fragen
Gruss Caddy | |
Re: Doppelte Einträge einer (Combo-)Listbox löschen | | | Autor: oe* | Datum: 14.02.09 19:35 |
| Hallo Caddy,
diese Situation mit den mehrfachen Namen trifft auch bei mir zu.
Ich sehe schon, dass kann ich nicht so auf die Schnelle umsetzen, da muss ich noch mehr verstehen. Ich werde auf alle Fälle versuchen deinen Code auf meine Anwendung umzustricken. Wann ich damit anfangen kann weis ich noch nicht, heute bin ich jedenfalls krank und ich leg mich gleich wieder ins Bett (nix Schlimmes, nur grippaler Infekt).
Vielen Dank auf alle Fälle für deine Hilfe, ebenfalls ein Dankeschön auch an alle anderen Forum-Helfer und Dieter Otter. | |
| Sie sind nicht angemeldet! Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|