collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 37
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 1
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13916
  • stats Beiträge insgesamt: 65835
  • stats Themen insgesamt: 8884
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: 2 Dao Recordset filtern und aktualisieren!  (Gelesen 6131 mal)

Offline saarmike

  • Newbie
  • Beiträge: 20
2 Dao Recordset filtern und aktualisieren!
« am: April 23, 2015, 16:16:37 »
Hallo zusammen,

ich habe ein grosses Problem und komme irgendwie nicht weiter, vielleicht kann mir jemand von euch helfen?

Hier der Quellcode der leider nicht funktioniert :-(

Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim rstMyAql As DAO.Recordset
Dim strKdNr As String

Set db = CurrentDb
Set rst = db.OpenRecordset("Analyse", dbOpenDynaset)
Set rstMyAql = db.OpenRecordset("kundenbestand", dbOpenDynaset)
        rst.MoveFirst
        Do Until rst.EOF
        rstMyAql.Filter = adFilterNone
        strKdNr = rst!Kundennummer
        rstMyAql.Filter = "Vernum = '" & strKdNr & "'"
            If rstMyAql.EOF And rstMyAql.BOF Then
                rst!Beitrag= 0
            Else
                rst!Beitrag= rstMyAql!Beitrag
            End If
        rst.Update
        rst.MoveNext
        Loop
    rst.Close
    rstMyAql.Close

Wie Ihr seht versuche ich mehrer Kunden die in der Tabelle Analyse stehen
mit Daten aus der Tabelle Kundenbestand zu aktualisieren, aber es funktioniert
nicht.
 

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3108
Re: 2 Dao Recordset filtern und aktualisieren!
« Antwort #1 am: April 23, 2015, 16:51:32 »
Hallo,
Zitat
aber es funktioniertnicht.
ein Hinweis auf Fehlermeldungen oder sonstiges Fehlverhalten wäre schon sinnvoll.

wie oft kann die Kundennummer in rstMyAql vorhanden sein? Wenn es nur einmal ist, könntest du suchen anstatt zu filtern. Außerdem vermischst du da offenbar DAO mit ADO.

Des weiteren könntest du beide Tabellen nach Kundennummer sortiert lesen und dich mit FindNext durch das Recordset hangeln.

Vor einem rst.Update sollte es ein rst.Edit geben.

Das sind so die Sachen die mir auf Anhieb aufgefallen sind.
Freundliche Grüße
MaggieMay
 

Offline saarmike

  • Newbie
  • Beiträge: 20
Re: 2 Dao Recordset filtern und aktualisieren!
« Antwort #2 am: April 23, 2015, 17:00:02 »
Hallo Maggie May,

sorry das rst.Edit habe ich vergessen zu kopieren, das steht da, es kommt auch keine Fehlermeldung
und wenn ich Debug.Print mache hat er auch immer eine neue Kundennummer, aber updaten will er
immer 14,90€, obwohl die da gar nicht stehen :-(
Die Kundennummer ist in jeder Tabelle nur einmal vorhanden, nur den Beitrag möchte ich aus der
Kundentabelle in die Analyse einfügen.

Könntest du mir ein Beispiel geben wie ich es am geschicktesten machen kann, aber bitte keine
Abfrage.
 

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3108
Re: 2 Dao Recordset filtern und aktualisieren!
« Antwort #3 am: April 23, 2015, 17:11:20 »
Zitat
das rst.Edit habe ich vergessen zu kopieren
Wie kann man eine einzelne Zeile aus einer Code-Block "vergessen" zu kopieren??

Aber warum machst du das eigentlich nicht mit einer Aktualisierungsabfrage, das wäre doch die einfachste Lösung.

Beispiel:
Update Analyse As A INNER JOIN kundenbestand As K
ON A.Kundennummer = K.vernum
SET A.Beitrag= K.Beitrag
Freundliche Grüße
MaggieMay
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23270
Re: 2 Dao Recordset filtern und aktualisieren!
« Antwort #4 am: April 23, 2015, 17:14:24 »
Hallo,

statt dem Recordset-Gegurke:


Update Analyse inner join Kundenbestand
on Analyse.Vernum = Kundenbestand.Kundennummer
set Analyse.Beitrag = Kundenbestand.Beitrag

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3108
Re: 2 Dao Recordset filtern und aktualisieren!
« Antwort #5 am: April 23, 2015, 17:19:55 »
@Franz:
geht das auch mit einem Left Join, um die Beiträge ggfls. löschen zu können?
Freundliche Grüße
MaggieMay
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23270
Re: 2 Dao Recordset filtern und aktualisieren!
« Antwort #6 am: April 24, 2015, 08:38:09 »
Hallo,

sicherlich....


Update Analyse Left join Kundenbestand
on Analyse.Vernum = Kundenbestand.Kundennummer
set Analyse.Beitrag = 0
Where Kundennummer is Null

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3108
Re: 2 Dao Recordset filtern und aktualisieren!
« Antwort #7 am: April 24, 2015, 13:14:47 »
Hi,

die Syntax ist mir schon klar, ich wollte nur wissen ob das auch ausführbar ist, da Aktualisierungsabfragen manchmal ein bißchen rumzicken. ;-)

Außerdem dachte ich da eher an eine "All-In-One"-Abfrage ala:Update Analyse Left Join Kundenbestand
On Analyse.Kundennummer = Kundenbestand.Vernum
Set Analyse.Beitrag = IIF(Kundenbestand.Vernum Is Null, 0, Kundenbestand.Beitrag)

BTW:
Zitat
Wie Ihr seht versuche ich mehrer Kunden die in der Tabelle Analyse stehen
mit Daten aus der Tabelle Kundenbestand zu aktualisieren
Was wir in deinem Code sehen ist eher der umgekehrte Fall.
Wie herum soll es denn nun tatsächlich sein?
« Letzte Änderung: April 24, 2015, 13:20:38 von MaggieMay »
Freundliche Grüße
MaggieMay
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23270
Re: 2 Dao Recordset filtern und aktualisieren!
« Antwort #8 am: April 24, 2015, 13:34:46 »
Hallo,

ausführbar ist die Akt-Abfrage mit dem left join schon...

Inwieweit sich aber die IIF-Konstruktion als Performance-Bremse auswirkt, kann ich nicht sagen.

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 882
Re: 2 Dao Recordset filtern und aktualisieren!
« Antwort #9 am: April 27, 2015, 23:46:26 »
Löschen und auf 0 setzen können sehr verschiedene Dinge sein.
Null ... heißt unbekannt. Das kann etwas ganz anderes als 0 sein, z.B. bei Schulden.

Auch: Wenn man eine Tabelle über eine andere Tabelle aktualisiert, macht meiner Meinung nach nur ein INNER JOIN Sinn, da man für eine Aktualisierung jeweils eine Entsprechung Quell- zu Zieldatensatz benötigt. Alles andere wären Konstanten, die man auch in einer zusätzlichen Abfrage abhandeln kann.
Mit freundlichem Glück Auf!

Eberhard