Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
einzelne Werte eines Datensatzes in den aktuellen kopieren
Gehe zu Seite 1, 2  Weiter
zurück: Berechnung mit Kriterium weiter: Dynamisches Kombifeld Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Frank_vH
Gast


Verfasst am:
14. Feb 2009, 00:46
Rufname:

einzelne Werte eines Datensatzes in den aktuellen kopieren - einzelne Werte eines Datensatzes in den aktuellen kopieren

Nach oben
       Version: Office 2007

Hallo,

ich habe leider in dem Forum unter "Datensatz duplizieren/ kopieren" nichts Passendes gefunden... habe ein Formular über das ich unter anderem Firmennamen und Kontaktdaten speichere.

Die dazugehörige Tabelle sieht so aus.

tbl_STAMMDATEN

[Nr] Autowert Primärschlüssel
[LEName] Firmenname
[Ort]
[Str]
[Telefon]
...

Bei dem Feld [LEName] handelt es sich um ein Kombinationsfeld, das bereits vorhandene Firmennamen über eine Abfrage ausliest. So kann nach entsprechender Auswahl eines vorhandenen Firmennamens ein neuer Datensatz für diese Firma angelegt werden. Nun möchte ich aber, dass auch die übrigen bereits vorhandenen Kontaktdaten des bestehenden Datensatzes in den neu angelegten Datensatz übertragen werden, entweder über eine Schaltfläche oder Doppelklick in das Firmennamen-Feld [LEName].

Ich vermute, dass die Struktur so aussehen könnte:
Code:
Private Sub btn_Copy_Click()
On Error GoTo Err_btn_Copy_Clic
    Dim rs As DAO.Recordset
    Dim Name As String
   
    Set rs = Me.RecordsetClone
    Name = Me![LEName]
    rs.FindFirst "LEName = " & Name
    rs![Ort] = Me![Ort]
    rs![Str] = Me![Str]
    '...
    rs.Close
Exit_btn_Copy_Click:
    Exit Sub
Err_btn_Copy_Click:
    MsgBox Err.Description
    Resume Exit_btn_Copy_Click
End Sub
Wer weiß Rat... Danke im Voraus!

Frank
KlausMz
Moderator Access


Verfasst am:
14. Feb 2009, 00:58
Rufname:
Wohnort: Irgendwo in der Pfalz


AW: einzelne Werte eines Datensatzes in den aktuellen kopier - AW: einzelne Werte eines Datensatzes in den aktuellen kopier

Nach oben
       Version: Office 2007

Hallo,
Zitat:
Nun möchte ich aber, dass auch die übrigen bereits vorhandenen Kontaktdaten des bestehenden Datensatzes in den neu angelegten Datensatz übertragen werden,
Das ist falsch, es genügt vollständig nur den Primärschlüssel zu speichern. Dazu müssen aber die zusätzlichen Daten in einer weiteren Tabelle geführt werden. n:1 mit der Stammdatentabelle in Beziehung stehend. Über diese Beziehungen stehen die anderen Felder jederzeit zur Verfügung. Das ist ja gerade der Sinn des Primärschlüssels.
Wenn die Erfassung des neuen Datensatzes (ich nehme an ein neuer Kontakt zur Firma) in einem Hauptformular mit einem Unterformular erfolgt, ist keine einzige Zeile VBA erforderlich, das Schlüsselfeld wird automatisch kopiert.

Wenn Du mit diesem Hinweis nicht klar kommst, sind mehr Einzelheiten zu Deinem Vorhaben erforderlich.

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Frank_vH
Gast


Verfasst am:
14. Feb 2009, 10:49
Rufname:

AW: einzelne Werte eines Datensatzes in den aktuellen kopier - AW: einzelne Werte eines Datensatzes in den aktuellen kopier

Nach oben
       Version: Office 2007

Hallo Klaus,

Danke für die Info.

Ich habe nur ein Hauptformular (kein Unterformular). Bisher habe ich angenommen, dass der Datensatz, in dem die Firmendaten bereits angelegt sind, anhand des Firmennamens ermittelt werden kann. Nach Auswahl eines bereits vorhandenen Firmennamens sollte der Datensatz ermittelt werden, in dem die Kontaktdaten der Firma bereits vorhanden sind, und diese sollen dann in den aktuell angezeigten Datensatz übertragen werden.

Ich habe zur Vereinfachung in der Tabelle unten nur die beiden relevanten Datensätze 3 und 7 angezeigt (es gibt natürlich mehr). In Datensatz Nr. 3 sind alle Daten vorhanden. Datensatz 7 wird gerade bearbeitet. In das Kombi-Feld gebe ich den Firmennamen ein, zu dem bereits im Datensatz 3 Daten vorhanden sind. Die Kontaktdaten (Str., Ort, Telefon) sollen aus dem Datensatz 3 in die entsprechenden Felder des 7. Datensatzes übertragen werden.

tbl_STAMMDATEN

Nr. 3 7
LEName Firma X Firma X
Str. X-Str. 1 (hier: "X-Str." aus Datensatz 3 übertragen)
Ort 12345 Ort (hier: "12345 Ort" aus Datensatz 3 übertragen)
Telefon 123456 (hier "123456" aus Datensatz 3 einfügen)

Ich dachte ein Rückgriff auf den Primärschlüssel wäre gar nicht notwendig.

Gruß
Frank
KlausMz
Moderator Access


Verfasst am:
14. Feb 2009, 11:24
Rufname:
Wohnort: Irgendwo in der Pfalz

AW: einzelne Werte eines Datensatzes in den aktuellen kopier - AW: einzelne Werte eines Datensatzes in den aktuellen kopier

Nach oben
       Version: Office 2007

Hallo,
die Speicherung des Primärschlüssels in der Tabelle ist ausreichend und richtig. Alles andere ist redundate Datenhaltung die zu vermeiden ist.

Welche Tabellen hast Du bis jetzt?

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Gast



Verfasst am:
14. Feb 2009, 15:05
Rufname:


AW: einzelne Werte eines Datensatzes in den aktuellen kopier - AW: einzelne Werte eines Datensatzes in den aktuellen kopier

Nach oben
       Version: Office 2007

Hallo Klaus,

gerne hätte ich gewusst, ob der von mir angegebene Code ein sinnvoller Ansatz ist.
Und wenn ja: Welche Änderungen müsste ich vornehmen? Oder sollte ich das über einen SQL lösen?

Die Duplizierung der Datensätze betrifft nur die tbl_STAMMDATEN, so dass die darauf bezogenen Tabellen m. E. hierfür nicht wichtig sind.

Danke für Deine Unterstützung Smile

Gruß
Frank
Marmeladenglas
komme zurecht


Verfasst am:
14. Feb 2009, 15:30
Rufname:

AW: einzelne Werte eines Datensatzes in den aktuellen kopier - AW: einzelne Werte eines Datensatzes in den aktuellen kopier

Nach oben
       Version: Office 2007

Hi,
Klaus hat dazu das wesentliche schon geschrieben.
Werden hier weitere Kontakte zu einer bestehenden Firma gespeichert, gehört das in eigene Tabelle. In der 2ten Tabelle wird lediglich der Fremdschlüssel der Firma gspeichert und sonst nix, alles andere ist redundant.
VBA-Code ist rein syntaktisch wohl soweeit in Ordnung mit ein paar Anmerkungen:
Zum tausendsten Mal: Name als Feldname ist zu vermeiden, da dies ein reserviertes Wort in Access darstellt Wink
Ein rs.FindFirst "Name = ...." ist suboptimal. Die Suche soll/muß über einen eindeutigen Primärschlüssel erfolgen und nicht über einen nicht eindeutigen Namen.
Was ist wenn es 2 Firmen gibt mit dem Namen "Müller" ??? Welches Schweinderl hättens dann gern ? rs.FindFirst nimmt den ersten passenden Datensatz, auch wenn du vielleicht die Firma2 mit dem Namen Müller wolltest.
Würdest du hier über einen Autowert-Index suchen, wäre das eindeutig.
Über SQL läßt sich das natürlich auch lösen, mit dem Vorteil der besseren Performance. Vom Ansatz her ist aber deine ganze Geschichte eindeutig falsch, so wie Klaus das ja schon ausgeführt hat.
Liefe das ganze über Haupt- mit Unterformular mit gebundenen Tabellen, ist kein VBA erforderlich , auch das hat KLaus schon geschrieben.
Gast



Verfasst am:
14. Feb 2009, 15:55
Rufname:

AW: einzelne Werte eines Datensatzes in den aktuellen kopier - AW: einzelne Werte eines Datensatzes in den aktuellen kopier

Nach oben
       Version: Office 2007

Hallo,

in der Tabelle tbl_STAMMDATEN sollen Vertragsdaten gespeichert werden.

Neben dem Firmennamen und den Kontaktdaten existieren je Datensatz rund dreißig weitere Datensatzfelder (Laufzeit, Vertragsbeginn, Vertragsgegenstand usw.).

Da die Firmennamen sehr komplex sind (langer Firmenname, Rechtsformzusätze), kann hier m. E. schon eine eindeutige Zuordnung vorgenommen werden (auch wenn der Weg über eine zweite Tabelle sicherlich eleganter wäre... Datenredundanz).

Es würde auch reichen, wenn der erste passende Datensatz über rs.FindFirst ermittelt wird.

Ich würde es auch gerne über einen VBA-Code versuchen.

Die Bezeichnung "Name" findet sich auch nicht in der Datenbank, sondern ich habe diesen Namen nur gewählt, um den Code möglichst verständlich zu halten (trotzdem guter Hinweis, dass dieser Begriff bereits reserviert ist).

Danke für Deine Hilfe!

Gruß
Frank
derArb
getting better


Verfasst am:
14. Feb 2009, 17:17
Rufname: derArb
Wohnort: Berlin

AW: einzelne Werte eines Datensatzes in den aktuellen kopier - AW: einzelne Werte eines Datensatzes in den aktuellen kopier

Nach oben
       Version: Office 2007

Hallo,
Zitat:
in der Tabelle tbl_STAMMDATEN SOLLEN !!! Vertragsdaten gespeichert werden.
Also hast Du noch keine oder nur Testdaten gespeichert.
Eine gute Gelegenheit also noch, um den Empfehlungen von KlausMZ und
Marmeladenglas zu folgen.

Du musst mit mindestens 2 Tabellen arbeiten. Ansonsten wirds Schrott.
Dabei wird Dir ungern jemand helfen wollen
Tabelle1: Stammdaten (Masterschlüsselfeld, Firmenname, Strasse, PLZ, Ort..etc.)
Tabelle2: Vertragsdaten (Fremdschlüsselfeld, Vertragsart, etc.)

Masterschlüssel (Primarykey, Autowert) setzt Du in eine 1:n Beziehung zu
Fremdschlüsselfeld (Feldtyp Zahl, Duplikate ja)
Das macht man über Extras...Beziehungen

1:n bedeutet: 1 Firma kann n Verträge haben
Willst Du bei jedem Vertrag dauernd die Stammdaten duplizieren?
Was ist, wenn sich die Stammdaten dann mal ändern?
Dann darfst Du alle doppelten Firmendaten nacheditieren.
Evtl. hilft Dir auch relationale Datenbanken

mfg
derArb

_________________
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
Marmeladenglas
komme zurecht


Verfasst am:
14. Feb 2009, 17:18
Rufname:

AW: einzelne Werte eines Datensatzes in den aktuellen kopier - AW: einzelne Werte eines Datensatzes in den aktuellen kopier

Nach oben
       Version: Office 2007

Hi,
das ändert nix an den schon gegebenen Antworten.
Wenn hier Vertragsdaten gespeichert werden, dann bedarf es dazu ebenfalls einer eigenen Tabelle.
Das hier die Namen der Firma einzigartig sind, mag zwar sein und wird dann wohl so auch funktionieren, ABER warum nicht gleich auf die sichere Seite und wie schon erwähnt über Autowert-Index suchen, zumal eine numerische Suche vor allem über Index schneller ist - abgesehen von dem sowieso schiefen Ansatz !
Dadurch wird jede Eventualität ausgeschlossen und ein mögliches Fehlerpotential minimiert !
Ich verstehe nicht, dass du auf deinem Konzept unbedingt bestehst, da du doch jetzt schon von 2 SEiten erfahren mußtest, dass man eine DB anders aufbaut.
Zitat:
sicherlich eleganter wäre
Das hat nix mit Eleganz oder Nicht-Eleganz zu tun, sondern eher was ist sinnvoll und was ist unsinnig Wink
Zuwas eine relationale DB, wenn du deren Prinzipien nicht anwenden möchtest!
Dann kannst du gleich auf Excel umsteigen und Dir ein Sheet in der Form, wie dargestellt, anlegen Smile
Edit:
da war derArb schneller und hat das ganze noch durch ein weiteres sehr sinnvolles Argument ergänzt ! Nacharbeiten aller Stammdaten, falls sich da was ändert. Läuft das über 2 Tabellen und in der zweiten Tabelle wird lediglich der Primärschlüssel gespeichert, mußt du nur in den Stammdaten den Wert ändern und er gilt sofort für alle abhängigen Datensätze.
Gast



Verfasst am:
14. Feb 2009, 17:49
Rufname:

AW: einzelne Werte eines Datensatzes in den aktuellen kopier - AW: einzelne Werte eines Datensatzes in den aktuellen kopier

Nach oben
       Version: Office 2007

Hallo zusammen,

Danke für die Hinweise... Leider sind in der Datenbank bereits rund 400 Datensätze gespeichert. Es existieren auch zwei weitere Tabellen, die relational mit der tbl_STAMMDATEN verknüpft sind... das Prinzip ist also mir schon klar.

Da die Anzahl der Datensätze, in denen der gleiche Firmenname auftaucht überschaubar ist, wollte ich mir den Stress sparen, die Firmendaten (Firmenname, Kontaktdaten usw.) in einer separate Tabelle zu speichern. Ich gehe davon aus, dass wegen der relativ geringen Anzahl der Datensätze mit gleichen Firmenangaben der Umfang der gespeicherten Daten bei einem relationalen Modell nur unwesentlich geringer wäre.

Daher habe ich angenommen, dass der Weg über eine VBA-Routine der Weg des geringsten Widerstandes wäre und ich mir auf diesem Wege die Erweiterung des Datenbankmodells sparen kann. Hinzu kommt, dass die Daten der einzelnen Datensatzfelder bei entsprechenden Eintragungen automatisch abgeändert werden sollen, was bei meinen sehr überschaubaren Access-Kenntnissen etwas kniffliger wäre... auch wenn's Euch unsinnig erscheint.

Gruß
Frank
Nachtrag: Gast am 14. Feb 2009 um 18:30 hat folgendes geschrieben:
OK, ihr habt mich überzeugt... werde die Tabellen teilen... das Argument Datenpflege zieht schon Smile

Nochmal recht herzlichen Dank für Eure Mühe und die schnellen Antworten.

Gruß
Frank
Marmeladenglas
komme zurecht


Verfasst am:
14. Feb 2009, 18:42
Rufname:

AW: einzelne Werte eines Datensatzes in den aktuellen kopier - AW: einzelne Werte eines Datensatzes in den aktuellen kopier

Nach oben
       Version: Office 2007

Hi,
schön, dass wir dich doch noch überzeugen konnten ! Wink
Mit deinen 400 Datensätzen:
das ist im Prinzip auch kein großes Problem, dies nachzuarbeiten. Über entsprechende Abfragen, läßt sich das relativ einfach mit geringem Zeitaufwand automatisch aufdröseln - zumal deine DB-Struktur anscheinend im Moment noch sehr einfach gehalten ist.
Zitat:
Umfang der gespeicherten Daten
ich glaube, dass ist das schwächste Argument bzgl. des Nicht-Aufteilens Smile
Speicherplatzverbrauch bzgl. redundanter Daten würde ich nicht an erster Stelle sehen.
Gast



Verfasst am:
14. Feb 2009, 22:07
Rufname:

einzelne Werte eines Datensatzes in den aktuellen kopieren - einzelne Werte eines Datensatzes in den aktuellen kopieren

Nach oben
       Version: Office 2007

Hallo nochmal,

ich habe beide Tabellen getrennt... Vertragsdaten einerseits... Firmendaten andererseits. Verknüpft sind beide über eine 1:n - Beziehung, und zwar über die Felder tbl_STAMMDATEN.LEZuO bzw. tbl_Partner.LENr

Das von mir benutzte Formular greift auf beide Tabellen zu (unter Eigenschaften/ Formular entsprechende SELECT-Anweisung), also kein Unterformular/ -bericht.

Der Firmenname wird in ein Kombinationsfeld eingegeben, wodurch der Inhalt des Feldes tbl_Partner.LENr in das Feld tbl_STAMMDATEN.LEZuO übertragen wird. Die Firmendaten (tbl_Partner.LEStr; tbl_Partner.LEOrt usw.) werden auch richtig in dem Formular angezeigt.

Nun habe ich folgendes Problem: Sobald ich einen Filter aktiviere oder Daten sortiere, erscheint sowohl in den Feldern der tbl_Partner #Name? .

Wer weiß Rat.

LG
Frank
Nachtrag: Gast am 14. Feb 2009 um 22:12 hat folgendes geschrieben:
Die Suchfunktion hat sich auch verabschiedet Sad

Gruß
Frank
derArb
getting better


Verfasst am:
14. Feb 2009, 22:25
Rufname: derArb
Wohnort: Berlin

AW: einzelne Werte eines Datensatzes in den aktuellen kopier - AW: einzelne Werte eines Datensatzes in den aktuellen kopier

Nach oben
       Version: Office 2007

hallo,

lass Dir doch vom Formularassistenten mal ein Formular mit Unterformular bauen.

mfg
derArb

_________________
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
Gast



Verfasst am:
14. Feb 2009, 22:29
Rufname:

AW: einzelne Werte eines Datensatzes in den aktuellen kopier - AW: einzelne Werte eines Datensatzes in den aktuellen kopier

Nach oben
       Version: Office 2007

Die Suchfunktion und die Filterfunktion gehen wieder... musste nur die VBAs etwas anpassen - Erweiterung "tbl_STAMMDATEN." vor die Feldbezeichnungen gesetzt.

Beim Sortieren verabschieden sich leider noch immer die Firmendaten aus der neu geschaffenen Tabelle... immer noch #Name?

Böses Halbwissen ;)

Frank
Code:
    Dim strSQL As String
   
    strSQL = "SELECT * " & _
               "FROM tbl_STAMMDATEN " & _
           "ORDER BY [Feldbezeichnung];"
    Me.RecordSource = strSQL
derArb
getting better


Verfasst am:
14. Feb 2009, 22:50
Rufname: derArb
Wohnort: Berlin


AW: einzelne Werte eines Datensatzes in den aktuellen kopier - AW: einzelne Werte eines Datensatzes in den aktuellen kopier

Nach oben
       Version: Office 2007

hallo,

mach Dir mal eine Abfrage, in welche Du die Felder der beiden Tabellen reinpackst.
Dann schau Dir die SQL Ansicht der Abfrage an.
Und dann versuch mal, in der Datenansicht der Abfrage einen neuen Datensatz einzugeben.
Das wird nicht gehen.
Du brauchst zur Darstellung dieser 1:n Beziehung 2 Formulare.
Ein Hauptformular, gebunden an die Stammdaten
Ein Unterformular, gebunden an die Vertragsdaten

mfg
derArb

_________________
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
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: Max. Werte über mehrere Datensätze ermitteln 1 Gast 1200 22. Aug 2005, 14:56
lothi Max. Werte über mehrere Datensätze ermitteln
Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten. Access Tabellen & Abfragen: Access Werte innerhalb einer Tabelle berechnen 1 Elmar9700 1684 21. Jun 2005, 16:26
Willi Wipp Access Werte innerhalb einer Tabelle berechnen
Keine neuen Beiträge Access Tabellen & Abfragen: einzelne ODBC-Tabelle sichern 3 Ramespure 696 20. Jun 2005, 09:40
Willi Wipp einzelne ODBC-Tabelle sichern
Keine neuen Beiträge Access Tabellen & Abfragen: Werte Zählen, aber bestimmte nicht dazu addieren 1 MrMarley 897 14. Jun 2005, 02:21
tobes Werte Zählen, aber bestimmte nicht dazu addieren
Keine neuen Beiträge Access Tabellen & Abfragen: Datensatz automatisch kopieren??? 0 Edelschnitt 701 11. Mai 2005, 19:41
Edelschnitt Datensatz automatisch kopieren???
Keine neuen Beiträge Access Tabellen & Abfragen: Numerische Werte in als Text definiertem Feld 4 Terminator 811 25. Apr 2005, 07:50
stpimi Numerische Werte in als Text definiertem Feld
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage und Bericht, einzelne Datensätze filtern 1 Jens 668 10. März 2005, 15:22
Jens Abfrage und Bericht, einzelne Datensätze filtern
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage die werte anfügt 2 Zoran 495 26. Jan 2005, 14:24
Zoran Abfrage die werte anfügt
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage Top2 Werte 2 Zoran 1209 25. Jan 2005, 18:03
Zoran Abfrage Top2 Werte
Keine neuen Beiträge Access Tabellen & Abfragen: AXP tagesaktuelle Werte in Tabelle ergänzen - HILFE!! 2 Stefn 506 05. Nov 2004, 14:27
Stefn AXP tagesaktuelle Werte in Tabelle ergänzen - HILFE!!
Keine neuen Beiträge Access Tabellen & Abfragen: Werte aus der Abfrage ausschliessen? 1 wolfu 1736 27. Okt 2004, 12:45
stpimi Werte aus der Abfrage ausschliessen?
Keine neuen Beiträge Access Tabellen & Abfragen: Werte der Untertab in Memofeld der Haupttabelle übernehmen 1 mb2 713 14. Okt 2004, 00:18
lothi Werte der Untertab in Memofeld der Haupttabelle übernehmen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Word VBA