e2mario
Goto Top

Access 2003 - Recordset

Hallo an alle,

ich würde mal wieder Hilfe in Access VBA benötigen.

Folgende Situation:

Ich erstelle anhand einer Tabellenerstellungsabfrage die tabelle: tmp_tabelle.
In dieser Tabelle stehen Daten für einen Späteren Bericht Namens: rpt_bericht
In der Tabelle tmp_tabelle gibt es unter anderem ein Feld das sich "ZahlungsBedingung" nennt.

Mein Ziel ist es nun per VBA prüfen zu können welcher Kunde (Feldname: Name1) in der Tabelle tmp_tabelle eine Zahlungsbedingung hat welche mit NACHN* beginnt.
(In Summe gibt es 3 Zahlungsbedingungen welche passen können NACHN -2%, NACHN -3%, NACHN - 5%).
Diese Kunden sollten anschließend mit der Meldung:
ACHTUNG: Kunden [Name1]
Kunden [Name1]
Kunden [Name1] sind per Nachnahme zu liefern.

in einer MxgBox erscheinen.

Hoffe ich habe mir verständlich genug ausgedrückt, und mir kann jemand helfen.
Ich vermute mal das ich dafür mit Recordset arbeiten muss, habe jedoch keine Ahnung wie ich das angehen soll....

DANKE für Eure HILFE!

lg
Mario

Content-ID: 120413

Url: https://administrator.de/forum/access-2003-recordset-120413.html

Ausgedruckt am: 22.12.2024 um 20:12 Uhr

tannerli
tannerli 14.07.2009 um 12:09:52 Uhr
Goto Top
Hi e2Mario

Meine Kenntnisse sind zwar auch nicht mehr so ganz aktuell, aber letztes Mal als ich sowas gemacht habe ging das in etwa so:

Dim rs as recordset
Dim qry

qry = "SELECT Zahlungsbedingung, Name1 FROM tmp_tabelle WHERE Zahlungsbedingung LIKE 'NACHN%"  

Set rs = CurrentDb().OpenRecordset(qry)

If rs.RecordCount Then
   rs.MoveFirst
   While Not rs.EOF
      Msgbox "Kunde " & rs.Fields.Item("Name1").Value & " muss per NN geliefert werden"  
      rs.MoveNext
  Wend
Else
   MsgBox "Keine Einträge per Nachnahme"  
End If
      

irgendwie sowas... ich erhebe weder anspruch auf vollständigkeit noch auf richtigkeit ;)
e2Mario
e2Mario 14.07.2009 um 12:47:17 Uhr
Goto Top
Hallo,

also das irgenwie sind schon 99,9% - DANKE DIR!
Das einzige Problem liegt noch bei " Zahlungsbedingung LIKE 'NACHN%" --> Syntaxfehler
Wenn ich anstelle von LIKE 'NACHN% die einzlenen Zbdg einzeln eingebe, klappt es schon wunderbar face-smile

Vielleicht bekommen wir das auch noch hin...

Danke!
tannerli
tannerli 14.07.2009 um 12:57:53 Uhr
Goto Top
Jap, der Syntaxfehler ist hier

qry = "SELECT Zahlungsbedingung, Name1 FROM tmp_tabelle WHERE Zahlungsbedingung LIKE 'NACHN%'"

nach dem %-Zeichen braucht es noch ein einzelnes ' um die Bedingung zu vervollständigen... das hatte ich vorhin wohl vergessen...
e2Mario
e2Mario 14.07.2009 um 13:25:30 Uhr
Goto Top
Hallo,

danker aber nein, das war er leider nicht,...
Der Code läuft zwar durch, jedoch werden die NACHN* nicht erkannt...

Eine Zusatzfrage hätte ich noch:
Ist es möglich alle Kunden mit NN in nur EINER Messagebox anzuzeigen. Bei bis zu 15 NN Sendungen kann das klicken ja zu richtiger Arbeit werden face-smile

DANKE!
tannerli
tannerli 14.07.2009 um 13:35:03 Uhr
Goto Top
Langsam habe ich hier so das Gefühl das ich keinen Support sondern mehr Programmiernug auf Auftrag betreibe...

Also 1. zur Query: Du hast schon NACHN% und nicht NACH* verwendet oder? (mit % und nicht *). Ich hab das so getestet und hat auch wunderbar funktioniert. (Zugegeben unter MSSQL2005 anstelle von Access aber sollte trotzdem gehen).
Ansonsten findest du unter http://sql.1keydata.com/de/sql-like.php eine gute Referenz wie das mit LIKE aussehen sollte. (Erstes google ergebnis nach 'sql like' übrigens... )

Und 2. zur einen Msgbox.

Ersetze
   While Not rs.EOF 
      Msgbox "Kunde " & rs.Fields.Item("Name1").Value & " muss per NN geliefert werden"   
      rs.MoveNext 
  Wend 

durch

While Not rs.EOF
   liste =  liste & rs.Fields.Item("Name1").Value & vbCRLF  
   rs.MoveNext
Wend
Msgbox "Folgenden Kunden sind per NN zu bedienen:" & vbCRLF & liste  

cheers
e2Mario
e2Mario 14.07.2009 um 13:54:56 Uhr
Goto Top
Nein nein, soweit lassen wir es nicht kommen... face-smile
Klar habe ich % anstelle von * verwendet. Die SQL Befehle like habe ich mir auch vorher angesehen....
Keine Angst, ich will mich hier nicht nur "bedienen" lassen, und einen auf Faul machen!

Welche Variante von LIKE ich auch verwende er checkt meine NN nicht...
Habe jetzt noch ein DCount eingebaut um die Summe der NN zu ermitteln.
Er kennt die NN Sendungen im Recordset zwar nicht, aber die Summe ermittelt er tadellos!

AnzNN = DCount("[Name1]", "tmp_Tabelle", "[ZahlungsBedingung] LIKE 'NACHN*'")
If AnzNN > 0 Then
MsgBox (AnzNN) & " " & ("NN vorhanden!") & " " & [Name1], vbOKOnly, "INFO"
Else
End If

Aber egal, ist zwar nicht ganz Formschön aber meine ursprüngliche Frage ist auf jeden Fall gelöst, und ich will dich auch
nicht nerven!
Also Frage erledigt und habe 1000 DANK!
tannerli
tannerli 14.07.2009 um 14:06:19 Uhr
Goto Top
<quote>
Klar habe ich % anstelle von * verwendet. Die SQL Befehle like habe ich mir auch vorher angesehen....
Keine Angst, ich will mich hier nicht nur "bedienen" lassen, und einen auf Faul machen
</quote>

Ach so, ja dann war das eine Fehlinterpretation meinerseits....

<quote>
ich will dich auch
nicht nerven!
</quote>

Keine Angst, wenn du mich nerven würdest hätte ich von vornherein nicht geantwortet ^^

Schliesslich ist das Forum da zum helfen, ich hab nur dann meine Mühe damit, wenn Leute sich die ganze Arbeit abnehmen lassen ohne zumindest lernwillig zu sein.

Falls dein Problem wirklich gelöst ist könntest du noch "Diesen Beitrag als gelöst markieren" im Forum

So long, and thanks for all the fish
tannerli
tannerli
tannerli 14.07.2009 um 15:38:27 Uhr
Goto Top
so und noch als allerletzen beitrag zu dem Thema:

ich hab grad noch mit nem kollegen gesprochen und siehe da: Access handhabt Wildcards anders als MSSQL Server... du muss demnach wirklich

WHERE Zbdg LIKE 'nach*'

nehmen (mit *)

dass sollte dann klappen

Cheers
tannerli
e2Mario
e2Mario 14.07.2009 um 15:48:28 Uhr
Goto Top
JAAAA
klappt 1A - super, - nun ist es PERFEKT!

Nochmals DANKE für deine Hilfe!

Mario