Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
ComboBox-Eintrag ändern
zurück: Einfache Summe Berechung?!? weiter: Unterformular aktualisieren geht nicht. Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
lippoliv
Office-VBA-Programmierer


Verfasst am:
16. Aug 2010, 15:08
Rufname: Oli

ComboBox-Eintrag ändern - ComboBox-Eintrag ändern

Nach oben
       Version: Office 2007

Hey all,
ich habe gedacht, meine Aufgabe wäre einfacher:
Ich habe zwei ComboBoxen, eine mit zwei Spalten und eine mit nur einer.
Die erste Liste beinhaltet verschiedenen Geschäftsnamen, die zweite Liste eine (mehr oder minder) statische Artikelliste, jeder Artikel wird in Spalte 1 mit Namen und in Spalte 2 mit Preis angezeigt.
In meinem Fall haben alle Artikel bei jedem Geschäft den selben Preis, allerdings sind je nach Geschäft einige Artikel kostenfrei erhältlich.

Wenn ich also in der ersten Liste "Laden A" auswähle ist in der Artikelliste "Produkt B" kostenfrei, wenn ich "Laden B" wähle ist "Produkt A" kostenfrei.

Da alle Artikel -wie bereits erwähnt- den selben Preis haben, habe ich eine Artikel-Tabelle, in der die Preise eingetragen sind.
Die Geschäfts-Liste hat ein "Nach Änderung"-Event, welches dann die Produkte laden und die Preise bei einigen Produkten (Ladenabhängig) 0en soll. Dafür gibt es eine DB-Tabelle, welche einen Laden und ein Produkt verknüpfen kann. Das Produkt ist dann für diesen Laden kostenlos Smile

Ich habe eigentlich alles soweit fertig (ich weiß welches Produkt in welchem Laden kostenfrei erhältlich ist) allerdings muss ich nun den Preis in der ComboBox anpassen. Dazu habe ich eine For-Schleife, welche alle Einträge der ComboBox durchläuft, prüft ob sie im aktuell gewählten Laden kostenfrei sind und dann halt die zweite Spalte der aktuell geprüften Zeile auf "0" setzen soll.
Dies klappt allerdings nicht.

Code:
CBGrundPos.Column(1, i) = Format$("0", "Currency")

Führt allerdings zu Fehlercode 424: Objekt erforderlich...


Ich hoffe ich konnte mein Problem Bildlich darstellen und ihr habt einige ideen, wie ihr mir helfen könnt.

--

PS: danke für jede Antwort & kann jemand mein Fehlplatziertes Topic in das VBA-Forum schieben... sry ;)

_________________
Mit freundlichem Gruß,
Oliver Lippert
DBKlempner
Datenbank-Klempner ;)


Verfasst am:
16. Aug 2010, 16:11
Rufname:


Re: ComboBox-Eintrag ändern - Re: ComboBox-Eintrag ändern

Nach oben
       Version: Office 2007

lippoliv - 16. Aug 2010, 15:08 hat folgendes geschrieben:

Wenn ich also in der ersten Liste "Laden A" auswähle ist in der Artikelliste "Produkt B" kostenfrei, wenn ich "Laden B" wähle ist "Produkt A" kostenfrei.

Da alle Artikel -wie bereits erwähnt- den selben Preis haben, habe ich eine Artikel-Tabelle, in der die Preise eingetragen sind.


Falscher Ansatz... ebenso das hier:

Zitat:
Ich habe eigentlich alles soweit fertig (ich weiß welches Produkt in welchem Laden kostenfrei erhältlich ist) allerdings muss ich nun den Preis in der ComboBox anpassen. Dazu habe ich eine For-Schleife, welche alle Einträge der ComboBox durchläuft, prüft ob sie im aktuell gewählten Laden kostenfrei sind und dann halt die zweite Spalte der aktuell geprüften Zeile auf "0" setzen soll.


Mach doch eine Zuordnungstabelle ArtikelGeschäft.
In diese Tabelle kommt dann eben auch der preis zum Artikel, nicht in die Artikeltabelle.

Datenquelle deines Combos ist dann eine SELECT...FROM...WHERE auf eben diese Tabelle:

Code:
SELECT  Artikel, Preis
FROM tblArtikelGeschaeft
WHERE GeschaeftID=[Me!cboGeschaeft]


(wenn das Combo, in der du das Geschäft auswählst "cboGeschaeft" heisst)



Damit kommst du um die Schleife komplett herum.

Volker

_________________
Linux is like a wigwam: no gates, no windows and an apache inside
-----
Ich beantworte keine ACCESS-Fragen per PN!
lippoliv
Office-VBA-Programmierer


Verfasst am:
16. Aug 2010, 16:18
Rufname: Oli

AW: ComboBox-Eintrag ändern - AW: ComboBox-Eintrag ändern

Nach oben
       Version: Office 2007

Aber dann habe ich jeden Artikelnamen knappe 40 mal in dieser Tabelle, und wenn sichd ann ein Preis ändert, muss ich ihn nicht einmal, sondern 40 mal updaten.

Ich habe vergessen zu erwähnen, das es 6 Auswahlmöglichkeiten für Artikel gibt (so eine art Einkaufswagen), jedem Artikel können sogenannte Ausschlüsse zugeteilt werden, wähle ich also als ersten Artikel "Artikel A" kann es sein, das in den restlichen 5 Listen "Artikel B" nicht mehr angezeigt wird, sondern nur noch "Artikel C" und "Artikel D".


Is irgendwie doof zu erklären, wenn Du weitere Informationen brauchst, sag einfach bescheid, ich versuche es dann so gut wie möglich zu beschreiben.

_________________
Mit freundlichem Gruß,
Oliver Lippert
DBKlempner
Datenbank-Klempner ;)


Verfasst am:
16. Aug 2010, 16:29
Rufname:

Re: AW: ComboBox-Eintrag ändern - Re: AW: ComboBox-Eintrag ändern

Nach oben
       Version: Office 2007

lippoliv - 16. Aug 2010, 16:18 hat folgendes geschrieben:
Aber dann habe ich jeden Artikelnamen knappe 40 mal in dieser Tabelle, und wenn sichd ann ein Preis ändert, muss ich ihn nicht einmal, sondern 40 mal updaten.


Nein, hast du nicht

Du brauchst für meine Lösung exakt 3 Tabellen:

Code:

1. tblArtikel
-------------
ArtikelID (autowert, PK)
ArtikelNr
ArtikelText

2.tblGeschaeft
----------------
GeschaeftID (autowert, PK)

(...)

3.ArtikelGeschaeft
---------------------
fkArtikelId (Fremdschlüssel)
fkGeschaeftID(Fremdschluessel)
Preis (Currency)


In der Tabelle 3 die beiden Felder, die mit "fk" beginnen, *gemeinsam* zum Primärschlüssel machen.

Jetzt kannst du loslegen.
Bei dieser Lösung ist es möglich, das jeder Artikel in jedem Geschäft einen anderen Preis hat.
Und ja, das hat durchaus zur Folge, dass du bei einer Preisänderung bei jedem Artikel den preis sooft anpassen musst, wie du Geschäfte hast.

Wenn die preise aber eh immer in alle Geschäften gleich sind, dann kannst du die auch einmal ändern und dann per UPDATE Abfrage für alle anderen anpassen.

Deine angedachte Lösung per Schleife ist jedenfalls suboptimal, ohne Frage.

Zitat:
Ich habe vergessen zu erwähnen, das es 6 Auswahlmöglichkeiten für Artikel gibt (so eine art Einkaufswagen), jedem Artikel können sogenannte Ausschlüsse zugeteilt werden, wähle ich also als ersten Artikel "Artikel A" kann es sein, das in den restlichen 5 Listen "Artikel B" nicht mehr angezeigt wird, sondern nur noch "Artikel C" und "Artikel D".

Is irgendwie doof zu erklären,


Habs, glaue ich, trotzdem verstanden.
Diese Abhängigkeit löst du halt ähnlich.
Und ja, die Lösung für dein Vorhaben ist etwas komplexer Wink

_________________
Linux is like a wigwam: no gates, no windows and an apache inside
-----
Ich beantworte keine ACCESS-Fragen per PN!
lippoliv
Office-VBA-Programmierer


Verfasst am:
17. Aug 2010, 09:38
Rufname: Oli

AW: ComboBox-Eintrag ändern - AW: ComboBox-Eintrag ändern

Nach oben
       Version: Office 2007

Dass die Schleife Suboptimal ist, glaube ich gerne, eine Lösung, wo ich den selben Wert in einer Tabelle knapp 40mal definiere (in dem Fall der Preis) auf jeden Fall auch.
Deine 3-Tabellen-Variante gefällt mir, wenn man in tblArtikel auch den Preis speichert und in ArtikelGeschaeft dann halt statt dem Preis ein Boolean, der bestimmt, ob der Artikel kostenfrei ist.
Das würde ich logischer finden, dann hätte ich aber immer noch das Problem, den Artikel mit 0€ in die ComboBox einzutragen.

Ich bedanke mir bei Dir auf jeden für die Hilfe und entschuldige mich jetzt schon dafür, dass ich so stur bin, aber ich finde, Datenbanken sollten jeden Wert so wenig wie möglich beinhalten. Hat ein Artikel immer den selben Preis, wird der Preis pro Artikel und nicht pro Geschäft definiert!

Ich habe gerade noch die Idee, die Daten erstmal in ein RecordSet zu laden und nach und nach in die ComboBox zu schreiben, somit kann ich dann den Preis ersetzten.
Ich melde mich wieder Smile (Hoffentlich kann ich dann den Status auf "Antwort" setzen)

_________________
Mit freundlichem Gruß,
Oliver Lippert
KlausMz
Moderator Access


Verfasst am:
17. Aug 2010, 09:53
Rufname:
Wohnort: Irgendwo in der Pfalz

AW: ComboBox-Eintrag ändern - AW: ComboBox-Eintrag ändern

Nach oben
       Version: Office 2007

Hallo,
der Vorschlag von Volker ist die richtige Lösung.
Zitat:
wo ich den selben Wert in einer Tabelle knapp 40mal definiere (in dem Fall der Preis) auf jeden Fall auch.
Nein, das ist nicht suboptimal sondern eine normalisierte Tabellenstruktur.
Zitat:
und in ArtikelGeschaeft dann halt statt dem Preis ein Boolean, der bestimmt, ob der Artikel kostenfrei ist.
nein, kein Ja/Nein, sondern einfach bei dieser Kombination 0 eintragen.

Deine Kombobox nimmt als Datenherkunft dann diese 3.Tabelle (ArtikelGeschaeft).
Dann brauchst Du gar nicht programmieren, was in einer DB zur Datenmanipulation immer anzustreben ist. Auch das recorset wird dann überflüssig. Was ja auch wieder eine suboptimale Lösung ist. Laughing

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
lippoliv
Office-VBA-Programmierer


Verfasst am:
17. Aug 2010, 11:41
Rufname: Oli

AW: ComboBox-Eintrag ändern - AW: ComboBox-Eintrag ändern

Nach oben
       Version: Office 2007

Problemlösung ohne mehrmalige Preisangabe:

Code:
1. tblArtikel
-------------
ArtikelID (autowert, PK)
ArtikelNr
ArtikelText
Preis (Currency)

2.tblGeschaeft
----------------
GeschaeftID (autowert, PK)
Geschaeftname

3.ArtikelGeschaeft
---------------------
fkArtikelId (Fremdschlüssel)
fkGeschaeftID(Fremdschluessel)



SELECT  tblArtikel.ArtikelNr, tblArtikel.ArtikelText, '0' AS Preis FROM tblArtikel
RIGHT OUTER JOIN tblArtikel ON ArtikelGeschaeft.fkArtikelId = tblArtikel.ArtikelID
WHERE ArtikelGeschaeft.fkGeschaeftID = 1
UNION
SELECT  ArtikelNr, ArtikelText, Preis FROM tblArtikel;


Selber konnte ich es nicht lösen, wobei mir die Idee mit der Übergreifenden Abfrage schon gekommen ist, ich habe einen bekannten gefragt, welcher Täglich mit Datenbanken kämpft Smile

Es Funktioniert.

Was ich Mache: ich lade alle Artikeldaten aus der Artikelliste, wobei ich die gesetzten ArtikelGeschaeft-Beziehungen auf ein bestimmtes Geschäft filtere. Anstatt den Originalpreis zu laden, lade cih einfach eine 0.
Somit habe ich schon mal alle Artikel, die in einem bestimmten Geschäft 0€ kosten.
Dann vereine ich diese Liste mit der eigentlichen Artikelliste über "UNION", alle Standard-Artikel werden dann durch die eben geladenen Artikel ersetzt.

Als Ergebnis: eine Liste aller Artikel egal ob zwei, drei oder keiner als "Kostenfrei" definiert ist.


Danke trotzdem für den Ansatz, die Preise anderst zu behandeln Smile

PS: vergesst es. jetzt zeigt er den 0€-Artikel zweimal an, einmal mit 0 und einmal mit nicht 0 euro...

_________________
Mit freundlichem Gruß,
Oliver Lippert
DBKlempner
Datenbank-Klempner ;)


Verfasst am:
17. Aug 2010, 18:29
Rufname:


Re: AW: ComboBox-Eintrag ändern - Re: AW: ComboBox-Eintrag ändern

Nach oben
       Version: Office 2007

lippoliv - 17. Aug 2010, 09:38 hat folgendes geschrieben:
Dass die Schleife Suboptimal ist, glaube ich gerne, eine Lösung, wo ich den selben Wert in einer Tabelle knapp 40mal definiere (in dem Fall der Preis) auf jeden Fall auch.


Letztere löasung ist keineswegs suboptimal, sondern sehr flexibel. Wie im virgen Post schon geschrieben, ermöglicht sie dir theoretisch auch, das jedes deiner Läden jeden Artikel zu anderen Preisen verkauft

Zitat:
Deine 3-Tabellen-Variante gefällt mir, wenn man in tblArtikel auch den Preis speichert


Damit hättest du aber wieder dasselbe Problem, vor dem du jetzt stehst: wie erreiche ich, dass für unterschiedliche Läden unterschiedliche Artikel 0-bepreist sind.

Zitat:
und in ArtikelGeschaeft dann halt statt dem Preis ein Boolean, der bestimmt, ob der Artikel kostenfrei ist.
Das würde ich logischer finden, dann hätte ich aber immer noch das Problem, den Artikel mit 0€ in die ComboBox einzutragen.


Eben; du erkennst das Problem also selber.

Zitat:
Ich bedanke mir bei Dir auf jeden für die Hilfe und entschuldige mich jetzt schon dafür, dass ich so stur bin, aber ich finde, Datenbanken sollten jeden Wert so wenig wie möglich beinhalten.


Du irrst; in Datenbanken werden nur sowenig *Redundanzen* wie möglich gespeichert.

Zitat:
Hat ein Artikel immer den selben Preis, wird der Preis pro Artikel und nicht pro Geschäft definiert!


Was dich aber jedesmal zu dem genannten Problem führt.

Zitat:
Ich habe gerade noch die Idee, die Daten erstmal in ein RecordSet zu laden und nach und nach in die ComboBox zu schreiben, somit kann ich dann den Preis ersetzten.


Das funktioniert zwar, widerspricht aber dem Datenbankprinzip völlig

Volker

_________________
Linux is like a wigwam: no gates, no windows and an apache inside
-----
Ich beantworte keine ACCESS-Fragen per PN!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Datensätze über Abfrage ändern/löschen 3 rage 583 30. Nov 2007, 10:52
KlausMz Datensätze über Abfrage ändern/löschen
Keine neuen Beiträge Access Tabellen & Abfragen: Wert per Abfrage ändern 3 Crunker 685 22. Okt 2007, 16:40
Pino Wert per Abfrage ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Mit Kontrollkästchen die Farbe eines Feldes ändern 8 MarcoX 996 24. Sep 2007, 20:35
MarcoX Mit Kontrollkästchen die Farbe eines Feldes ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Tabellenname nachträglich ändern 3 Aquerias 2118 06. Sep 2007, 20:16
jens05 Tabellenname nachträglich ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Feldeigenschaften per SQL ändern? 1 Aquerias 1486 06. Sep 2007, 15:13
Nouba Feldeigenschaften per SQL ändern?
Keine neuen Beiträge Access Tabellen & Abfragen: Id Wert nachträglich nochmals ändern 13 arcos00 1108 27. Jun 2007, 11:57
Nouba Id Wert nachträglich nochmals ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Autowert ändern 0 derhoeppi 815 21. Nov 2006, 13:30
derhoeppi Autowert ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Datumsformat ändern in mmm jjjj (januar 2006) 2 Gast 2699 23. Aug 2006, 09:17
Gast Datumsformat ändern in mmm jjjj (januar 2006)
Keine neuen Beiträge Access Tabellen & Abfragen: benutze Tabellen in Abfrage ändern? 15 MBarthel 1397 04. Aug 2006, 13:30
MBarthel benutze Tabellen in Abfrage ändern?
Keine neuen Beiträge Access Tabellen & Abfragen: Duplikat-Abgleich in Kunden-DB; Bei Dublette: Status ändern 0 deadlink 1011 30. März 2006, 22:13
deadlink Duplikat-Abgleich in Kunden-DB; Bei Dublette: Status ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Daten über eine Schleife im gefilterten Formular ändern 1 Alwin 707 21. März 2006, 09:28
mapet Daten über eine Schleife im gefilterten Formular ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Feldname ändern? 9 Chriz1985 5469 30. Jan 2006, 08:23
Chriz1985 Feldname ändern?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML CSS