FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 
smartsuitefaq.martinholz.de Foren-Übersicht

Vergabe laufender Nummern

 
Neues Thema eröffnen   Neue Antwort erstellen    smartsuitefaq.martinholz.de Foren-Übersicht -> Approach
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Dirk
Neuer User


Anmeldungsdatum: 22.12.2007
Beiträge: 6
Wohnort: Sachsen-Anhalt

BeitragVerfasst am: Mi 06.02.2008 22:12    Titel: Vergabe laufender Nummern Antworten mit Zitat

Gibt es eine einfache Möglichkeit, Approach zu veranlassen, bei der Vergabe laufender Nummern -z.B. für Aufträge pro Tag - bei einem neuen Tag mit 1 zu beginnen? Es sollte auch die weitergehende Numerierung bei Nacherfassungen möglich sein. Kann hier jemand helfen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Martin
Site Admin


Anmeldungsdatum: 31.12.2004
Beiträge: 389
Wohnort: Düsseldorf

BeitragVerfasst am: So 10.02.2008 13:29    Titel: Antworten mit Zitat

Einfach ist relativ. Ich fand es jetzt nicht sooo schwer Wink

Ich habe eine Beispieldatei erstellt, an der das nachzuvollziehen ist.
Ich habe es (natürlich) über Script gelöst. Dieses Script liegt in "Globals" und wird durch zwei Events aufgerufen:

  1. bei manueller Änderung des Eingabedatums (als Vorgabewert ist Heute)
  2. gleich nach dem erstellen eines neuen Datensatzes über eine Schaltfläche.


Das Script rödelt einmal durch die DB-Einträge und sucht alle Eintragsdaten und die entsprechenden Seriennummern pro Tag durch. Dabei "merkt" es sich die größte Seriennummer pro Tag und addiert 1 hinzu. Diese aufaddierte Seriennummer wird dann automagisch in das Formular eingetragen.

Hier ist das Script:
Code:
Sub Seriennummer_Pro_Tag
   Dim Datum As Variant
   Datum = CurrentView.objectlist(2).text
   
   Dim Verbindung As New Connection
   Dim Abfrage As New Query
   Dim Ergebnis As New Resultset
   
   Dim i As Long, sernum As Long, datensaetze As Long
   sernum = 0
   
   If Verbindung.ConnectTo("dBase IV") Then
      Set Abfrage.Connection = Verbindung
      Abfrage.SQL = "SELECT ""erfasst_am"",""seriennummer"" FROM """ & CurrentDocument.Path & "beispiel.dbf"""
      Set Ergebnis.Query = Abfrage
      If Ergebnis.Execute Then
         datensaetze = Ergebnis.NumRows   
         Dim Eintragsseriennummern List As Long
         If datensaetze <> 0 Then
            Ergebnis.FirstRow         
            For i = 1 To datensaetze Step 1
               Dim Eintragsdatum As Variant, Eintragsseriennummer As Variant
               Eintragsdatum = Ergebnis.GetValue(1)
               Eintragsseriennummer = Ergebnis.GetValue(2)
               
               If Cstr(Eintragsdatum) = Datum Then
                  Eintragsseriennummern(sernum) = Eintragsseriennummer
                  sernum = sernum + 1
               End If
               
               Ergebnis.NextRow
            Next
         End If   
      End If
   End If
   
   
   Dim max_seriennummer As Long
   max_seriennummer = 1
   
   Forall seriennummer In Eintragsseriennummern
      If seriennummer > max_seriennummer Then
         max_seriennummer = seriennummer
      Else
         max_seriennummer = max_seriennummer + 1
      End If
      Print seriennummer
   End Forall
   CurrentView.objectlist(3).text = Cstr(max_seriennummer)
End Sub


Die Datenbank wird über "dBase IV" mit SQL abgefragt.
Mit ODBC dürfte das Script deutlich kürzer werden um die Seriennummer zu finden:
Code:
' Pseudocode:
SELECT MAX('seriennummer') FROM Beispiel WHERE ('erfasst_am' = datum)


Hier ist die Beispieldatei: http://smartsuitefaq.martinholz.de/download/Laufende_Seriennummer_pro_Tag.zip
_________________
FAQ gelesen?
=> http://smartsuitefaq.martinholz.de/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden AIM-Name Yahoo Messenger MSN Messenger
Dirk
Neuer User


Anmeldungsdatum: 22.12.2007
Beiträge: 6
Wohnort: Sachsen-Anhalt

BeitragVerfasst am: So 10.02.2008 14:07    Titel: Antworten mit Zitat

Danke, Martin. Ich habe leider von VBA, Scripts & Co. nicht allzuviel Ahnung. Ich muß jetzt Dein sehr gut funktionierendes Script nur noch in meine betreffenden Datenbanken einbauen. Bin mir aber sicher, das irgendwie hinzubekommen.
Nochmals DANKE ! Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dirk
Neuer User


Anmeldungsdatum: 22.12.2007
Beiträge: 6
Wohnort: Sachsen-Anhalt

BeitragVerfasst am: Fr 29.02.2008 18:13    Titel: Antworten mit Zitat

Hallo Martin, noch ein kleines Problem. Ich habe das Script in der DB SENDUNGSDETAILS plaziert und es funktioniert dort einwandfrei. Nun habe ich diese mit der DB AUFTRAGSVERWALTUNG verbunden, dieses Script auch dort reingesetzt und das entsprechende Feld mit einem Makro zur Scriptsausführung versehen. Im Formular (Hauptdatenbank AUFTRAGSVERWALTUNG) passiert aber nichts, während in der DB SENDUNGSDETAILS (wenn ich sie einzeln öffne) alles wie oben beschrieben funktioniert. Kannst Du mir bitte nochmal helfen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Martin
Site Admin


Anmeldungsdatum: 31.12.2004
Beiträge: 389
Wohnort: Düsseldorf

BeitragVerfasst am: Sa 01.03.2008 12:28    Titel: Antworten mit Zitat

vermutlich passt lediglich ein Feldname oder das auslösende Feld aus objectlist() nicht zu der anderen Datenbank.
Prüfe die Objekte und den SQL-Query nochmal.

Bedenke bitte, dass SQL-Queries über verbundene Datenbanken nur bei einer Datenbankverbindung über ODBC funktionieren - nicht in der von mir vorgeschlagenen Variante!

Wenn Du nicht weiterkommst, poste bitte mal das Script und die DB-Struktur.
_________________
FAQ gelesen?
=> http://smartsuitefaq.martinholz.de/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden AIM-Name Yahoo Messenger MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    smartsuitefaq.martinholz.de Foren-Übersicht -> Approach Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht 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.


Powered by phpBB © 2001, 2002 phpBB Group
Protected by Anti-Spam ACP