Als Quick &/ Dirty Lösung einfach statt dem Rückgabewert der Inputbox, den verweis auf das Zahlenfeld. Die Datentypen würde ich auch sauberer machen - aber so wirds gehen... (- ohne den Sinn dieser Routine zu hinterfragen)

Private Sub Befehl36_Click()

  Dim lngI    As Long

  Dim lngIMax   As Long

  Dim strEingabe As String

  

  DoCmd.RunCommand acCmdSelectRecord

  DoCmd.RunCommand acCmdCopy

  strEingabe = [Feldname]

  'Benutzereingabe wurde abgebrochen

  If StrPtr(strEingabe) = 0 Then Exit Sub

  lngIMax = Val(strEingabe) - 1

  For lngI = 1 To lngIMax

    DoCmd.RunCommand acCmdPasteAppend

  Next lngI

End Sub

...zur Antwort

MS Access vergibt die Nummern 100% ig korrekt, da ein einmal vergebener AutoWert nicht nochmal vergaben wird. Die ID ist wahrscheinlich auch Dein Primärschlüssel. Das macht aus Datenbanksicht absolut Sinn, dass ein einmal vergebener Schlüssel nicht nochmal vergeben wird. Stell Dir vor, Du hast eine Personaltabelle, bei der die ID die Personalnummer ist. Nun löscht Du (wenn das Sinn macht) den letzten Datensatz, z.B. mit der Personalnummer 10. Dann fügst Du einen neuen Datensatz hinzu und der bekäme dann wieder die 10. Dann hätte der neue Mitarbeiter schon alle Fehlzeiten und Urlaub etc... geerbt, wenn in anderen Tabellen weitere Infos zu der Personalnummer stünden (und keine Löschweitergabe in der DB vereinbart war).

Also, sei froh, dass das System so sauber arbeitet. Der Primärschlüssel sollte ja auch nur der internen Verarbeitung dienen.

Wenn Du unbedingt eine durchlaufende Nummer haben willst, füge ein neues Feld hinzu (Zahlenfeld) und schreibe dann z.B. in den ersten Datensatz eine 1. Als Standardwert trägst Du dann im Feld folgendes ein:
=DomMax("[DieserFeldname]";"Tabellenname")+1

Dann erhält jeder neue Datensatz einen um 1 höheren Wert, als der größte vorkommende Wert in diesem Feld.

Gruß, Armin

...zur Antwort

Im tabellenentwurf, bei dem feld unten auf nachschlagen gehen, dann wertliste auswählen und in der datenherkunft die Auswahlmöglichkeiten durch semikolon getrennt eingeben

...zur Antwort

Das hört sich aber kompliziert an mit den N und M und Z.. ;-) Sagen wir mal einfach, dass Daten als QR Code ausgegeben werden sollen. Dann einfach in einem Bericht ein Steuerelement einfügen, welches Daten in QR Code umwandelt. Also wie ein Textfeld - nur eben die Daten als QR Code. Solche Steuerelemente gibt es zuhauf. Am bekanntesten ist der Hersteller "ActiveBarcode" - der bietet solche ActiveX Komponenten/Controls an, die man dann im Bericht, oder Formular einbinden kann. VG, Armin

...zur Antwort

am allereinfachsten ist es, wenn Du basierend auf der Tabelle einfach ein Formular erstellst. Also wenn Du in der Tabellenansicht bis, dann oben bei Erstellen einfach auf Autoformular klicken.

Dann kannst Du mit dem Assistenten in das Formular ein Kombinationsfeld einfügen. Wenn der Assistent fragt, was Du für ein Kombinationsfeld einfügen willst, dann die Option wählen "einen Datensatz suchen" wählen.

Wenn dann alles durchgeklickt ist, kann man beim Scannen den Focus in das Kombinationsfeld setzen und dann scannen - dann sollte es gehen

...zur Antwort

Hallo, natürlich gibt es auch eine Funktion, die Werte aus einer Domäne (Tabelle oder Abfrage) aufaddiert (Summe bilden). In den Funktionen findet man Hilfe unter den sgn. Domänenaggregatfunktionen. Hier gibt es also DOMSUMME, DOMWERT, DOMANZAHL, DOMMIN, DOMMAX, etc... . Im beschriebenen Fall kann man also einfach in einem Formular ein ungebundenes Textfeld einfügen. In den Steuerelementinhalt kommt dann die Funktion: =Domsumme("[FeldNameMitWerten]" ; "TabellenName" ) . Wenn gewünscht, kann man als drittes Argument noch ein Kriterium angeben: "[Kategorie]='Kat1'" oder "[Kategorie]= & "'" & [FeldnameMitKategorie] & "'" . Gruß, Armin Dippel

...zur Antwort

Hallo, natürlich gibt es in SQL-Abfragen in Access auch den SWITCH-Befehl. Im Abfragegenerator in Deutsch heißt der Befehl SCHALTER. Folgendermaßen funktioniert dieser: "Switch(Bedingung1, DannWert1, Bedingung2, DannWert2, .... , True ; SonstWert)" . Man schreibt also immer das Pärchen von Bedingung und Wert, wenn die Bedingung erfüllt ist der Reihe nach hin. Solange, bis man alle Fälle betrachtet hat. Dann kann man noch das "Case else" abbilden. Hierzu muß man das Schlüsselwort TRUE, gefolgt vom SonstWert am Ende eintragen. Beispiel: Switch([ID=1],"DannWert1",[ID]=2,"DannWert2",[ID]=3,"DannWert3",True,"SonstWert") AS NeuesFeld . Viele Grüße, Armin Dippel

...zur Antwort

Mit einer Beziehung zwischen zwei Tabellen verankert man u.a. im Datenbanksystem, dass die Daten konsistent sind und bleiben. Beispiel: Man hat eine Tabelle "tblRechnungen". Hier werden die Kopfdaten zu einer Rechnung, wie z.B. Rechnungsnummer, Rechnungsdatum, die Nummer des Rechnungsempfängers, Zahlungskonditionen, etc... gespeichert. Da bei unterschiedlichen Rechnungen auch unterschiedlich viele Positionen berechnet werden (mal sind es zwei, mal zwölf, etc...) erstellt man eine extra Tabelle "tblRechnungenPositionen". Hier trägt man die Menge, den Artikel, den Einzelpreis, etc... ein. Jetzt muß man dem Datenbanksystem ja noch mitteilen, welche Position zu welcher Rechnung gehört. Also könnte man sich nun die Rechnungsnummer aus der Haupttabelle merken und in den Positionen, die zu der einen Rechnung gehören immer die Rechnungsnummer in einem Feld dazu speichern. Dann weiß man, welche Position zu welcher Rechnung gehört. Dies ist aber natürlich fehleranfällig, umständlich und geht über eine Beziehung einfacher und besser. Man erstellt eine Beziehung in diesem Beispiel z.B. zwischen einem Autowert-Feld in der Tabelle "tblRechnungen", wie z.B. ID oder RGNummer. Dann braucht man noch ein Zahlenfeld (LongInteger) in der "tblRechnungenPositionen". In den Beziehungen zieht man nun eine Verbindung zwischen beiden Tabellenfeldern. Man klickt auf "referientelle Integrität" und "Löschweitergabe an Detaildatensätze". Wenn von einem Autowert-Feld verknüpft wird, braucht man keine Aktualisierungsweitergabe. Dies alles hat zur Folge, dass nun das Datenbanksystem überwacht, dass man z.B. keine Rechnungsposition für eine Rechnungsnummer anlegt, die es in der Haupttabelle noch nicht gibt. Oder wenn man eine Rechnung löscht, werden alle zugehörigen Positionen mit gelöscht. Ich hoffe, etwas geholfen zu haben. Viele Grüße Armin Dippel

...zur Antwort

Hallo, der Ansatz mit der Abfrage ist schon der richtige. Folgendermaßen sollte man hier im Detail vorgehen: Grundsätzlich wird ersteinmal ein eindeutiger Datensatzidentifizierer (Primäschlüssel) in Deiner Adresstabelle benötigt. In der Regel legt Access dies beim ersten Speichern der Tabelle automatisch an (Name "ID", Typ "AutoWert"). Um nun ein PopUp Formular mit genau dem Datensatz an zu zeigen, der gerade in einem Hauptformular angezeigt wird, mußt Du das PopUp-Formular auf einer Abfrage basieren lassen, die sich die Daten aus der Adresstabelle (gleiche Tabelle, wie Hauptformular) zieht (Einstellung in den Formulareigenschaften unter Datensatzherkunft). Dann schreibst Du im Abfragegenerator unter das Feld ID (Feldname des Primärschlüssels) im Bereich Kriterien "Formulare![NameDesHauptformulars]![ID]" . Dies hat zur Folge, das nun das PopUp-Formular immer nur mit dem Datensatz geöffnet wird, der gerade im Hauptformular angezeigt wird. Ich hoffe, geholfen zu haben. Viele Grüße, Armin Dippel

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.