PDA

Vollständige Version anzeigen : richtige Datenverarbeitung


Markusb
24.11.2003, 08:59
Habe ein Formular (Interessenten)

wo ich alle Anrufe aufnehme wer sich für welches Objekt Interessiert aus dem Kundenverzeichnis wird eine KundenNr angezeigt falls dieser Name dort schon existiert:

=DomWert("[KundenNr]";"[Kundenverzeichnis]";"[Name] = '" & [IName] & "'")

Sonst sieht das Interessenten Formular so aus...

Objekt Anrede Name Tel ...

1 Hr. Dr Maier Wolfgang 0316/112233
2 Fr Schuster 0660/123456
3 Hr August 0660/147258


Gewisse Interessenten wenn sie nicht nur eine Info möchten werden per Schaltflächenklick in das Kundenverzeichnis aufgenommen wenn die kundenNr leer ist bzw. aktualisiert:


Dim DB As Database

Dim rs As Recordset
Set DB = CurrentDb
Set rs = DB.OpenRecordset("Kundenverzeichnis")

If IsNull(Me!KundenNr) Then
If MsgBox("Möchten Sie '" & Me!IName & "' als neuen Kunden aufnehmen?", vbYesNo) = vbYes Then

rs.AddNew

rs!Anrede = Me![Anrede]
rs!Name = Me![IName]
rs!Ort = Me![Ort]
rs!PLZ = Me![PLZ]
rs!Strasse = Me![Strasse]
rs!Telprivat = Me![Tel]
rs!Aufnahmedatum = Me![Datum]

rs.Update
rs.Close
DB.Close

Me.Refresh

End If

Else
Dim strSQL As String
strSQL = "UPDATE Kundenverzeichnis SET [Anrede] = '" & Me.Anrede & "', [Name] = '" & Me.IName & "' , [Plz] = '" & Me.PLZ & "', [Ort] = '" & Me.Ort & "', [Strasse] = '" & Me.Strasse & "', [Telprivat] = '" & Me.Tel & "', [Aufnahmedatum] = '" & Me.Datum & "' WHERE KundenNr = " & Me.KundenNr & ";"
DB.Execute strSQL

End if


So nun mein Problem


Nehmen wir an ich habe einen Namen "Schuster" dieser wurde angelegt und hat die KundenNr "2".

Nächste Woche ruft ein anderer Interessent an der ebenfalls "Schuster" heißt und dieser würde dann auch automatisch die KundenNr "2" bekommen.

Sollte ja nicht umbedingt sein.

wie könnte ich das angehen um es zu verbessern???

Ich habe nicht von jedem Kunden einen Vornamen wäre auch leichter...

Vl kann ich es irgendwie mit Anrede bzw. Tel Nr verbinden...??

Wer hat Ideen?

Danke im voraus

MFG
Markus

int
24.11.2003, 09:06
Du könntest entweder per Autowert das ganze Machen oder eben per RecordCount o.ä. an die Sache rangehen und die ID manuell setzen.

Markusb
24.11.2003, 09:09
HI

Was genau sollte ich mit Autowert machen??

Die KundenNr ist ja mit Autowert deffiniert!

Wie meisnt du das genau??

Danke

MFG
Markus

CptChaos
24.11.2003, 09:51
Wenn die Kundennummer als Autowert definiert ist, gibt es keine doppelten Einträge.
Verstehe das Problem noch nicht ganz.

Wieso arbeitest Du mit mit "rs" um in die Tabelle zu schreiben?
Einfacher wäre es doch, das Formular auf die Tabelle zu beziehen...

Ich weiss, VBA ist toll, aber manchmal gehts ohne einfacher ;)

Markusb
24.11.2003, 09:58
Beim Anlegen selbst würde es keine Probleme geben..

Aber wie im Beispiel beschrieben:

wenn eine Kunden "Schuster" mit der KundenNr "10" existiert (im Kundenverzeichnis)

und ich nun in dem Interessenten Formular einen anderen "Schuster" eintrage würde er dann automatisch im Feld KundenNr die "10" eintragen obwohl es sich gar nicht um diesen Kunden handelt..

in paar Monaten kann man das nicht mehr überblicken..


Mache das mit RS da ich ja nicht jeden Interessenten als Kunden anlegen möchte.

MFG
Markus

CptChaos
24.11.2003, 10:02
Glaub is noch zu früh für mich... :rolleyes:

Zum Verständnis:
Du hast eine Tabelle, in der Kundendaten drinnen stehen.
Diese füllst Du über ein Formular.

Wie erkennt das Form, das es den eingegebenen Namen (z.B. Schuster) schon gibt und wieso vergibt Dir die DB dann eine Nummer (über Autowert) die es schon gibt? :confused:

Kannst vleicht mal Deine DB hochladen (bitte als Acc97)?

Paul.Ostermeier
24.11.2003, 10:03
wer würde wo automatisch eine KundenNr. 10 eintragen ?

wenn die KundenNr ein Autowert ist, erhält jeder neue Datensatz eine eigne lf. Nummer - eben einen Autowert

stpimi
24.11.2003, 10:06
Ich würde hinter den Button zuerst ein Pop-Up-Formular einbauen, das Dir alle bereits vorhandenen Datensätze mit gleichem Namen zeigt. Über einen Button in diesem Formular kannst Du dann entscheiden, ob Du den Kunden aus deiner Liste neu anlegen willst oder nicht. Diese Entscheidung kannst meines Erachtens nur Du selbst treffen.

Mfg, Michael

Markusb
24.11.2003, 10:14
Macht ja nix i versuchs mal zu erklären falls das in der Früh bei mir geht*gg*


Hab ein Form(Interessenten) u. Tabelle Interessenten...

dort werden alle laufenden Anrufe der Interessenten eingetragen.

Dann existiert ein Kundenverzeichnis (extra form u tabelle) wo eben nur die echten Kunden eingetragen werden...


Das heißt wenn ein Interessent eben mehr möchte als nur eine Info wird er zur Kunde (vom Interessenten Form per Schaltfläche ins Kundenverzeichnis eingetragen)

Im Interessentenformular wird weiters die KundenNr mittels DomWert vom Kundenverzeichnis angezeigt:

=DomWert("[KundenNr]";"[Kundenverzeichnis]";"[Name] = '" & [IName] & "'")

Das heißt die KundenNr v. Kundenverzeichnis wo der Name dem Namen des Interessenten Forms gleich ist...

MFG
Markus

Markusb
24.11.2003, 10:17
HI Michael

das wäre ein Lösung...


was soll ich deiner Meinung nach im Interessenten Form mit dem Feld KundenNr machen das aus dem Kundenverzeichnis per DomWErt kommt, machen?

Kann ich das irgendwie auch noch mit der Tel Nr bzw Anrede abhängig machen u nicht nur vom Namen selbst??

MFG
Markus

CptChaos
24.11.2003, 10:20
Aha!
Also hast Du in deiner Kundentabelle keinen Autowert!

Dann wirds schwieriger...
Müsstest beim anlegen eines Kunden prüfen, ob es den Namen schon in der Interessenten-Tabelle gibt und entsprechend vergleichen...

Sind denn die Felder der Tabellen gleich?
Dann könntest des ganze einfacher machen mit einer Checkbox, die in der Tabelle anzeigt, ob es sich um einen Kunden handelt oder nicht.

Markusb
24.11.2003, 10:26
Doch habe auch im Kundenverzeichnis einen Autowert für KundenNr!


Im Interessenten Form hab ich halt auch fortlaufende IDs die aber nicht so wiechtig sind..

die Felder sind nicht ganz gleich..

im Kundenverzeichnis selbst ist alles viel feiner aufgeteilt und genauer detailiert...


MFG
Markus

stpimi
24.11.2003, 10:31
Ich würde das gar nicht über DomWert machen, da das ja nur einen Wert liefert. Aber vermutlich wirst Du bald viele Herr Maier und Frau Huber haben.

Hinter Deinem Button steht
DoCmd.OpenForm "DeinPopupForm"

Dein PopUp-Formular hat in der Datenherkunft (kommt aus der Tabelle Kunde) beim Feld KundeName als Kriterium folgendes stehen:

=Formulare!DeinInteressentenformular!IName

Dann sollte das Pop-Up nur jene Sätze zeigen, die eben diesen Nachnamen haben. Wenn Du dann siehst, das die entsprechende Person bereits als Kunde existiert, brichst Du ab, sonst klickst Du auf Anlegen und hast dahinter deine Anlegeverarbeitung.

Mfg, Michael

Markusb
24.11.2003, 10:43
Danke Michael leuchtet irgendwie ein

Du meinst ich soll im Interessenten Form auf die KundenNr mit DomWert verzichten??

Würde sie gern aber irgendwie anzeigen! Habe sie auch verknüpft wenn ich darauf klicke springt er gleich ins Kundenverzeichnis zu dem Datensatz...

genau das ist das Problem das ich in Zukunft die Maiers u Hubers nicht mehr überblicken werde*gg*.


Könnt ich das DomWErt feld (KundenNr) auch irgendwie von der TelNr u Anrede abhängig machen?

MFG
Markus

stpimi
24.11.2003, 10:53
Du kannst ja die Kundennummer in Deinem Pop-Up-Formular auch mitanzeigen lassen. Auch die Verzweigung sollte von dort aus kein Problem sein.

Mfg, Michael

Markusb
24.11.2003, 11:01
Danke Michael

Hab mal das Popup Form gebastelt zeigt auch alles an wie ich will...


Nur gibts immer eine neue Zeile für neuen DS einfügen brauch ich ja nicht... wie kann ich die deaktivieren???

Nur müßte ich halt immer auf Kunde anlegen im Interessenten form Klicken um die KundenNr rauszubekommen...

wäre halt schön wenn ich für die bereits angelegten Kunden im Interessenten Form schon die KundenNr sehen könnte wie eben bis jetzt im KundenNr Feld mit DomWert..

MFG
Markus

stpimi
24.11.2003, 11:10
wäre halt schön wenn ich für die bereits angelegten Kunden im Interessenten Form schon die KundenNr sehen könnte wie eben bis jetzt im KundenNr Feld mit DomWert..

Ich sehe da eben nur das Problem, das Du nur über den Namen und über ein nicht-eindeutiges Kriterium suchen musst .... Da wird die ggf. ermittelte Nummer manchmal und mit wachsender Datenmenge immer öfter nicht die gewünschte sein. Auch wenn Du nur einen Herrn XY hast, kannst Du nur aufgrund des Nachnamens nicht mit Sicherheit sagen, ob der Kunde mit dem Interessenten identisch ist.

Mfg, Michael

Markusb
24.11.2003, 11:10
Hab bereits den neues DS mit Popup deaktiviert!!!


Nur das zweite hab ich noch nicht..

mFG
Markus

Markusb
24.11.2003, 11:13
Ja Leider Michael sehe das gleiche Problem...

deswegen wollte ich die DomWert Abfrage auch irgendwie ausweiten auf auf die Tel Nr bzw. Anrede oder so irgendwie...

oder wie könnte ich es lösen? Möchte ja auch vom InteressentenForm so wie bis jetzt mit Doppelklick dann in den Datensatz des Kundenverzeichnises kommen.

MFG
Markus

stpimi
24.11.2003, 11:32
Soweit ich das sehe, hast Du eigentlich keine Kriterien, die das ganze zu 100% eindeutig machen.

Eventuell könntest Du das Pferd von der anderen Seite aufzäumen: Gib die Daten in ein Suchformular ein, das Dir dann eben die vorhandenen Sätze aus Kunden auflistet. Dann kannst Du dort bei Übereinstimmung einen Kunden wählen und als Interessent zu einem Objekt anlegen oder eben die entsprechende Person nur als Interessent anlegen.


Bei genauerer Überlegung erscheint mir Dein Datenmodell ein wenig fragwürdig und nicht der Normalform entsprechend. Ich würde alle Personendaten (egal ob nur Interessent oder "echter" Kunde) in einer einzigen Personentabelle verwalten. Dann hast Du ja eine Tabelle der Objekte. Da diese beiden Tabellen zueinander in einer m:n - Beziehung stehen, brauchst Du dann noch eine Verknüpfungstabelle, in der die ObjektID mit der PersonenID verknüpft ist. Dort würde ich dann auch ncoh festhalten, ob und welche Informationen die Person zum betreffenden Objekt haben will. Auf keinen Fall solltest Du zu jedem Objekt den Kunden namentlich dazuschreiben.
Hier solltest Du vielleicht noch jetzt schnell ein bisschen Überlegungsarbeit hineinstecken. Der Aufwand lohnt sich, du ersparst Dir hinterher ein vielfaches der aufgewendeten Zeit.

Mfg, Michael

Markusb
24.11.2003, 11:46
Danke Michael

Muß mir das alles mal durch den Kopf gehen lassen*gg*


MFG
Markus

frogi
24.11.2003, 12:10
Hallo!

Suche im Forum nach frogi, da findest du eine Adressen2000_ok Datenbank. Die kannst du dir umbauen und du hast was du brauchst.

l.g. frogi

Markusb
24.11.2003, 12:22
Danke

ok suche nach benutzer frogi! gibt leider viele treffer muß alle aufmachen


MFG
Markus

Markusb
24.11.2003, 12:28
Hi

Habs unter:

http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=100412&highlight=frogi

gefunden...

Nur kann ich es leider nicht öffnen da ich A97 habe daher nicht erkanntes DB Format.

MFG
Markus