Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Tabelle aufteilen

Begonnen von silentwolf, April 13, 2011, 11:50:44

⏪ vorheriges - nächstes ⏩

silentwolf

Hallo mal wieder :)
Wollte fragen ob jemand weis wie man am einfachsten eine Tabelle in zwei Tabellen aufteilen kann.
Folgende situation:
Habe eine Kunden Tabelle wo Adressen und Telefonummern hinterlegt sind.
Ich habe eine neue Tabelle tblTelefon mit nur Telefonnummern Kun_id_f, Telefon, Vermerk.

In der Kundentabelle sind Mobil, Tel1, Tel2, Tel3, Fax nummer enthalten.
Nun würde ich gerne diese Nummern in eine neue Tabelle einfügen.
Duch die Kunden ID sind die beiden Tabellen schon miteinander verknüpft.

Ich denk das sollte ziehmlich einfach sein wenn man es kann natürlich :(

Vielen Dank
Albert

Hondo

Hallo,
Tabelle aufteilen geht in der Art dass du zuerst die Tabelle mit Ctrl+C und Ctrl+V kopierst, und dann in den beiden Tabellen die Felder entfernst die überflüssig geworden sind.
Dann fügst du der neuen Tabelle mit den Kontaktdaten ein neues Feld hinzu, mit Datentyp Zahl und Namen z.B. AddressID.
Im Verknüpfungsfenster verbindest du dann beide Tabellen über das ID-Feld der einen Tabelle mit dem Feld AdressID der anderen.

Das wars.
Gruß Andreas

silentwolf

Hallo Andreas,
danke für Deine Antwort!
Leider brauche ich aber etwas anderes.
Vieleicht muss ich es doch noch besser formulieren.
tblKunden hat vier Felder mit Telefonummern und natürlich eine Kunden_Id
tblKunTel hat eine KunTel_id und ein Feld mit Telefonummer und eines mit Vermerk
Ich möchte nun für Kunden_id (101 z.B.) das alle Telefonummern die dieser Kunde besitzt in diese Tabelle einfügen.
Mit einer Anfügeabfrage habe ich bis jetzt nur ein Feld einfügen können.
Weis leider nicht wie ich alle einfügen kann.

Danke nochmals
Albert

database

#3
Hallo Albert,

ZitattblKunden hat vier Felder mit Telefonummern
...wieso dieses? In der V5 war das nicht so!

Ok erzeuge in deiner DB ein neues Modul und füge in dieses folgenden Code ein:


Sub einfuegen()

   Dim rst As DAO.Recordset
   DoCmd.SetWarnings False

   Set rst = CurrentDb.OpenRecordset("SELECT Kun_id, Mobil, Tel1, Tel2 FROM tblKunde")

   rst.MoveFirst

   Do While Not rst.EOF

       If Not IsNull(rst!Mobil) Then
           Call schreibe(rst!Mobil, rst!Kun_id)
       End If
   
       If Not IsNull(rst!Tel1) Then
           Call schreibe(rst!Tel1, rst!Kun_id)
       End If
   
       If Not IsNull(rst!Tel2) Then
           Call schreibe(rst!Tel2, rst!Kun_id)
       End If
   
       If Not IsNull(rst!Tel3) Then
           Call schreibe(rst!Tel3, rst!Kun_id)
       End If

   rst.MoveNext
   
    Loop

   Set rst = Nothing
   DoCmd.SetWarnings True

End Sub

Sub schreibe(ByVal tel As String, ByVal kid As Long)

   DoCmd.RunSQL ("INSERT INTO tblKunTel(Kun_Tel, Kun_id_f)VALUES('" & tel & "'," & kid & ")")

End Sub


Die Feldnamen (Tel1, Tel2, ...) in den Bedingungen (If...) und im SQL String bei currentDB.OpenRecordset musst du natürlich an deine Tabellenfeldnamen anpassen!

Wenn du die Änderungen durchgeführt hast speichere das Modul, stelle den Cursor innerhalb der ersten Methode (Sub einfuegen) und durchlaufe einen Durchgang mit F8.
Wenn dier Ablauf fehlerlos erfolgt ist, drückst du F5 um die restlichen Daten ebenfalls in die Tabelle tblKunTel zu holen.
Ist zwar nur eine Krücke aber ....

HTH

silentwolf

Guten Morgen Peter,
da hast Du schon recht das es bei V5 nicht so war aber bei einer vorherigen Version einer Db hatten wir es so.
Jetzt muss ich aber die vorhandenen Daten in meine V5 bzw. neuen Db einpflegen und deshalb brauche ich es.
Ich habe nun das Modul eingefügt aber leider bekomme ich nun zuviele Datensätze.
Er werden also datensätze importiert die eine Kun_id haben. aber keine dazugehörige TelefonNummer.
z.B. hat Kun_id 101 nur eine Mobil nummer es werden aber auch Tel1, Tel2, .... auch wenn es keine dazugehörigen daten gibt importiert.

Wenn es ein zu großer aufwand ist es umzuändern dann werde ich es mit excel modifizieren und dann nochmals importieren.

Auf alle Fälle vielen Dank!!
Albert

silentwolf

Hallo Peter,
hab es schon geregelt!
Danke

database

Hallo Albert,

sehe deine Nachricht erst jetzt...

ZitatKun_id 101 nur eine Mobil nummer es werden aber auch Tel1, Tel2, .... auch wenn es keine dazugehörigen daten gibt importiert.
...das kann nur dann der Fall sein, wenn die Felder Tel1, Tel2, ... etwas anders als NULL enthalten!


silentwolf

Peter kein problem hab es schon erledigt mit excel und importiert.
Jetzt passt es.
Muss Heute noch einiges erledigen und hoffe es hinzubekommen.
Bist Du Heute hier?
Hoffe ggg da ich wahrscheinlich einige Fragen noch haben werde :(

database

Hallo bin heute gelegentlich hier - ich hab' daneben 'leider' auch noch meinen Job zu erledigen  :-\

;D

silentwolf

Ja verstehe schon :)
Vieleicht liest man sich ja noch gg :)

Danke auf alle Fälle!!!

silentwolf

Peter hoffe Du bekommst diese Nachricht.

Habe nun meine Rechnungen zu Kunden alle in der Db erfasst also Rechnung und Rechnungsdetails.
Wie geht es nun weiter mit diesen Rechnungen.
Also in der tblKontoLink?
Möchte nichts verhaun!
Auch bin ich mir nicht sicher wie ich die Ausgangsrechnungen nun einfügen soll damit das natürlich dann alles stimmt!
Mache immer Db sicherungen also kann ich hoffentlich nicht alles falsch machen ;) Aber wäre trotzdem hilfreich wenn Du mir diesbezüglich helfen könntest. Was Du ja eh so oft machst!!!!!



database

Hallo Albert,

es ist nicht gut in einem gelösten Beitrag weiter zu schreiben, da erkennt man nicht unbedingt, dass ein neuer Beitrag verfasst wurde!

ZitatAlso in der tblKontoLink?
Da kannst du in der Regel nicht viel falsch machen.
In dieser Tabelle werden die Fremdschlüssel zu RechDetails und Tabelle tblKonten eingetragen.
Wenn du Soll und Haben aus der Tabelle rausgenommen hast brauchst du nicht mal Beträge erfassen, da die mit einer Abfrage ermittelt werden können.

Ähnlich bei den Ausgaben...
Auch für diese werden lediglich die KontenId und die BestRechID erfasst.

Jeder Kontoeingang und jeder Kontoausgang bzw Betriebsausgabe ist ein EIGENER Datensatz, also niemals Ein- und Ausgang im gleichen Datensatz erfassen.
Wenn du so willst ist da immer eine eigene Buchungszeile zu verfassen.

Was mir aber aufgefallen ist - du solltest in der Tabelle tblKontoLink ein Feld Buchungsdatum erstellen, Datentyp natürlich Datum/Uhrzeit!