Neuigkeiten:

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

Mobiles Hauptmenü

Positionsnummervergabe

Begonnen von Bernie110, März 22, 2012, 10:02:54

⏪ vorheriges - nächstes ⏩

Bernie110

Hallo,

wie würdet ihr folgendes machen.

Ich hab eine Tabelle Tbl_Sendungen die folgende Felder beinhaltet

DT_Nr = Autowert + Pk
Entpadepos = Zahlenfeld
Tour_Nr = Zahlenfeld
Empfänger_Name = Textfeld
Empfänger_Strasse = Textfeld
Empfänger_Land = Textfeld
Empfänger_Plz = Textfeld
Empfänger_Ort = Textfeld

Diese Tabelle wird mit Tbl_Fahrzeuge verknüpft ( via Tour_Nr und Pk der Tabelle_Fahrzeuge )

In das Feld Entladepos tragen wir manuell Nummern von 1 - x ein.
Das ist eine Art Positionsnummer.

Beim Eintrag einer Nummer in das Feld "Entladepos" achten wir darauf, dass Sendungen an den selben Empfänger die gleiche Nummer haben.

Sieht dann etwa so aus.

DT_Nr   Entladepos     Tour_Nr        Empfänger_Name       Empfänger_Ort
------------------------------------------------------------------------------------------------------
1001             1                 10            Müller                          München
1002             2                 10            Schmitt                        Stuttgart
1003             1                 10            Müller                          München
1004             3                 10            Meyer                          Karlsruhe
1005             4                 10            Paul                             Ulm
1006             1                 10            Müller                          München
1007             2                 10            Schmitt                        Stuttgart.



So und ich suche nun nach einer Möglichkeit die Nummer per Vba automatisch einzutragen.

habt Ihr eine Idee wie man das machen könnte ?

Gruss
Bernie


DF6GL

Hallo,

wenn Du per Abfrage (SQL) auf diese Liste mittels passender Kriterien zugreifen kannst, dann etwa so:


Recordset mit o. g. Abfrage, die nach Name, Ort und evtl. DT_Nr sortiert,  öffnen und mit einer Schleife durchlaufen.  Bei jedem Durchlauf wird dem Feld  "Entladepos" beginnend mit 1 die PosNr zugewiesen und bei einem (Gruppen)-Wechsel (Name und Ort ändert sich, auf den natürlich getestet werden muss) die Pos-Nr. um 1 erhöht.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Bernie110

#2
Hi Franz,

ok..ich hab das mal versucht.. auf die Art ...oder ?

CurrentDb.Execute "Update DT_Erfassung Set Entladepos='" & rs!EntladePos & "' where TourNr = " & rs!TOURNR & " And EMPF_Adresse2 Like '" & rs!EMPF_Adresse2 & "' And EMPF_Ort like '" & rs!EMPF_Ort & "'"


aber wie bring ich dann eine Schleife unter ?

Keinen Plan  ???
Kannst du mir bitte "mal" wieder helfen ?

Danke Gruss
Bernie

Bernie110

Ok du meinst es auf die Art... aber ich krieg das trotzdem nicht hin  :-[

ZitatDim zaehler As Long
Dim strSQL As String
Dim DB As DAO.Database
Dim rs As DAO.Recordset



If Me!TOUR_ERFASSUNG_SchnellFrm_DT_UFO.Form.Recordset.RecordCount > 0 Then
Set rs = Me!TOUR_ERFASSUNG_SchnellFrm_DT_UFO.Form.RecordsetClone

Do Until rs.EOF
rs.Edit

Set DB = CurrentDb
strSQL = "SELECT  a.LfdNr "
     strSQL = strSQL & " FROM DT_Erfassung AS a order by Empf_Adresse1 order by EMPF_Adresse1"
    strSQL = strSQL & " WHERE a.ABG_Firmenname1='" & rs!ABG_FirmenName1 & "'"
    strSQL = strSQL & " And a.TourNr =" & rs!TOURNR
    strSQL = strSQL & " And a.EMPF_Firmenname1='" & rs!EMPF_FirmenName1 & "'"
    strSQL = strSQL & " And a.EMPF_Adresse1='" & rs!EMPF_Adresse1 & "'"
    strSQL = strSQL & " And a.EMPF_Land='" & rs!EMPF_Land & "'"
    strSQL = strSQL & " And a.EMPF_Plz='" & rs!EMPF_Plz & "'"
    strSQL = strSQL & " And a.EMPF_Ort='" & rs!EMPF_Ort & "'"

zaehler = 0
rs!EntladePos = zaehler + 1

rs.Update
rs.MoveNext
Loop

Set DB = Nothing
Set rs = Nothing

End If

DF6GL

Hallo,


wenn die "Liste" ein Unterform ist, dann kannst Du die SQL-(Abfrage) einsparen...



Dim rs As DAO.Recordset
Dim i As Long, aktOrt As String, aktName As String


If Me!TOUR_ERFASSUNG_SchnellFrm_DT_UFO.Form.Recordset.RecordCount > 0 Then

Me!TOUR_ERFASSUNG_SchnellFrm_DT_UFO.Form.OrderBy = "Empf_Adresse1 ,  EMPF_Ort"
Me!TOUR_ERFASSUNG_SchnellFrm_DT_UFO.Form.OrderByOn = True

Set rs = Me!TOUR_ERFASSUNG_SchnellFrm_DT_UFO.Form.RecordsetClone
rs.MoveFirst

aktOrt = rs!EMPF_Ort
aktName = rs!Empf_Adresse1
i = 0

Do Until rs.EOF
   If aktOrt = rs!EMPF_Ort And aktName = rs!Empf_Adresse1  Then
     i = i + 1
   Else
     i = 1
     aktOrt = rs!EMPF_Ort
     aktName = rs!Empf_Adresse1
   End If
 
 
rs.Edit
   rs!EntladePos  = i
rs.Update
 
 
rs.MoveNext
Loop
 
rs.Close: Set rs = Nothing
 
End If

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Bernie110

#5
Hi Franz,

vielen Dank ersteienmal.

Leider funktioniert der Code nicht. ( Also der Code schon, aber nicht so wie er funktionieren sollte)

Er vergibt zwar Nummern, aber berücksichtigt dabei nicht, dass ,wie bei o.g. Beispiel gezeigt, mehrere Sendungen an den gleichen Empfänger auch die gleiche Nummer erhalten soll.

Er vergibt für einige DS die Nummer 1 , obwohl er schon bei einem Empfänger mit der selben Adresse die Nr 2 vergeben hat.

Zum verständnis
bei diesem Code macht er es richtig : Allerdigns mit manueller hilfe

If Me.EntladePos > 0 Then
RunCommand acCmdSaveRecord
CurrentDb.Execute "Update DT_Erfassung Set Entladepos='" & Me!EntladePos & "' where TourNr = " & Me!TOURNR & " And EMPF_Adresse2 Like '" & Me.EMPF_Adresse2 & "' And EMPF_Ort like '" & Me.EMPF_Ort & "'"
End If

Bei diesem Code, muss ich die Nummer 1,2,3,4,usw, manuell eintragen, aber er teilt die gleiche nummer für jeden DS mit dem gleichen Empfänger weiter.

Soll das dieser Code auch so bewirken ?

Gruss Bernie

DF6GL

Hallo,

ja, ok und sorry, habe das "verwechselt"   8)



So etwa:


Dim rs As DAO.Recordset
Dim i As Long, aktOrt As String, aktName As String


If Me!TOUR_ERFASSUNG_SchnellFrm_DT_UFO.Form.Recordset.RecordCount > 0 Then

Me!TOUR_ERFASSUNG_SchnellFrm_DT_UFO.Form.OrderBy = "Empf_Adresse1 ,  EMPF_Ort"
Me!TOUR_ERFASSUNG_SchnellFrm_DT_UFO.Form.OrderByOn = True

Set rs = Me!TOUR_ERFASSUNG_SchnellFrm_DT_UFO.Form.RecordsetClone
rs.MoveFirst

aktOrt = rs!EMPF_Ort
aktName = rs!Empf_Adresse1

i = 1
 
Do Until rs.EOF
   If Not (aktOrt = rs!EMPF_Ort And aktName = rs!Empf_Adresse1)  Then
     i = i + 1
     aktOrt = rs!EMPF_Ort
     aktName = rs!Empf_Adresse1
   End If
 
 
rs.Edit
   rs!EntladePos  = i
rs.Update
   
rs.MoveNext
Loop
 
rs.Close: Set rs = Nothing
 
End If
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Bernie110

Wow super, danke !!  :o

Funzt einwandfrei :)

Gruss
Bernie