vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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!

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

Fragen zu Tipps & Tricks und Workshops im vb@rchiv
Tipp 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*
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Doppelte Einträge einer (Combo-)Listbox löschen 
Autor: ModeratorDieter (Moderator)
Datum: 10.02.09 21:24

Du musst die Funktion "DistinctArray" aus dem Tipp ebenfalls mit in den Code einfügen.

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Doppelte Einträge einer (Combo-)Listbox löschen 
Autor: ModeratorDieter (Moderator)
Datum: 11.02.09 22:03

Das List(Of) Objekt gibt es seiz VB2005.

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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*
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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*
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Doppelte Einträge einer (Combo-)Listbox löschen 
Autor: oe*
Datum: 13.02.09 16:56

Caddy schrieb:
Zitat:

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


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*
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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*
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um einen neuen Beitrag 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