Neuigkeiten:

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

Mobiles Hauptmenü

Position automatisieren

Begonnen von Youssef, Juni 02, 2015, 11:35:46

⏪ vorheriges - nächstes ⏩

database

Hallo,

Zitatdas Problem ist nun, dass die position immer  hoch gezählt wird für alle IDs

Die gezeigte Formel erhöht den MAXIMALWERT im Feld 'xy' deiner Tabelle 'yz' um 1 wenn ein neuer Datensatz erzeugt wird.
Deiner vorangegangenen Beschreibung nach wird das das Index-Feld sein, das du zuvor manuell bei jedem Datensatz um 1 erhöht hast.

Diese Position wird durch die Formel klarerweise IMMER (bei JEDEM neuen Datensatz) hochgezählt - das ist ja auch der Sinn und Zweck einer Automatisierung!

Zitatich will damit sagen , dass es gut wäre wenn  es geprüft bei jeden einzelnen ID-Nummer

*häääää...?*

MaggieMay

Sorry, aber...
Zitat von: database am Juni 09, 2015, 16:39:45*häääää...?*
geht ja nun gar nicht.

Das soll wohl heißen "Wie meinst du das?" und es wäre schön wenn das auch so oder ähnlich freundlich formuliert zum Ausdruck gebracht würde.


Freundliche Grüße
MaggieMay

Youssef

Hallo,
ich habe in meinem Datenbank Werkzeuge IDs , jeden Werkzeug-ID-Nummer bekommt einen oder mehreren Datensätze(Daten).
Ich will durch meine Programmierung, dass die Reihenfolge automatisch fesgelegt wird das heißt wenn ich für das Werkzeug ID xxxx Daten einfüge die nächste freie Positionnummer vergeben wird.

MaggieMay

Hi,

dann musst du noch ein Kriterium hinzufügen, bspw so:=DomMax("FeldNameInDerTabelle";"TabellenName";"ID=" & [ID])+1
Da musst du natürlich auch noch den richtigen Datenfeld- und Steuerelementnamen einsetzen.

Und damit es auch beim ersten Datensatz einer neuen ID klappt, setzt du noch die NZ-Funktion ein:
=NZ(DomMax("FeldNameInDerTabelle";"TabellenName";"ID=" & [ID]);0)+1
Freundliche Grüße
MaggieMay

Youssef

hi,
danke für den Code habe ihn probiert geht nicht .
ich habe hier mein VBA code villeicht ist besser zu verstehen um was es geht:
Die Variable a soll meine veränderliche  Position sein  .
'Einfügen in der Tabe.TMS_TDM_TOOLTECHNOEXV
strSQL1 = "INSERT INTO TMS_TDM_TOOLTECHNOEXV ([TOOLID],[MATERIALID],[MATERIALGROUPID],[MACHINEID],[MACHINEGROUPID],[TECHNOCLASSID],TOOLTECHNOPOS )" & _
                "VALUES ('" & Me.txtTOOLID & "', '" & _
                        Me.txtMATERIALID & "','" & _
                        Me.txtMATERIALGROUPID & "', '" & _
                        Me.txtMACHINEID & "', '" & _
                        Me.txtMACHINEGROUPID & "', '" & _
                        Me.txtTECHNOCLASSID & "',a)"


'Einfügen in der Tabe.TMS_TDM_TOOLTECHNOLIST
strSQL = "INSERT INTO TMS_TDM_TOOLTECHNOLIST ([TOOLID],CUTSPEED,FEEDPTOOTH,TOOLTECHNOLISTPOS,IDTYPE,TOOLTECHNOPOS)" & _
                "VALUES ('" & Me.txtTOOLID & "'," & _
                        str(Me.txtCUTSPEED) & "," & _
                        str(Me.txtFEEDPTOOTH) & ", " & _
                        str(Me.cboTOOLTECHNOLISTPOS) & " ,2,a)"


'Einfügen in der Tabe.TMS_TDM_TOOLTECHNO
strSQL2 = "INSERT INTO TMS_TDM_TOOLTECHNO ([TOOLID],[TECHNOCLASSID],IDTYPE,TOOLTECHNOPOS)" & _
                "VALUES ('" & Me.txtTOOLID & "','" & _
                        Me.txtTECHNOCLASSID & "',2,a)"

Kann man die a variable in Abhängigkeit von TOOLID  machen und damit die Position festlegen?


MaggieMay

Wenn du den Datensatz per VBA einfügst musst du halt dort den Domänenausdruck einsetzen:
a = NZ(DomMax("TOOLTECHNOPOS","TMS_TDM_TOOLTECHNOLIST","TOOLID='" & Me.txtTOOLID & "'"),0)+1
Freundliche Grüße
MaggieMay

Youssef

Zitat von: MaggieMay am Juni 10, 2015, 15:05:35
Wenn du den Datensatz per VBA einfügst musst du halt dort den Domänenausdruck einsetzen:
a = NZ(DomMax("TOOLTECHNOPOS","TMS_TDM_TOOLTECHNOLIST","TOOLID='" & Me.txtTOOLID & "'"),0)+1

das ist in VBA, was meinst du mit dort ?
meinst du im Programm selber ?

MaggieMay

Hi,

"dort" ist da wo du die SQL-Strings erzeugst und vermutlich auch ausführst, also in dem Code-Auszug den du oben gezeigt hast.
Bevor du die Variable "a" bei der Erstellung des SQL-Codes verwendest, ermittelst du die neue Position.

Das sähe dann bspw. so aus:
Dim a As Long
a = NZ(DMax("TOOLTECHNOPOS","TMS_TDM_TOOLTECHNOLIST","TOOLID='" & Me.txtTOOLID & "'"),0)+1

'Einfügen in der Tabe.TMS_TDM_TOOLTECHNOEXV
strSQL1 = "INSERT INTO TMS_TDM_TOOLTECHNOEXV ([TOOLID],[MATERIALID],[MATERIALGROUPID],[MACHINEID],[MACHINEGROUPID],[TECHNOCLASSID],TOOLTECHNOPOS )" & _
                "VALUES ('" & Me.txtTOOLID & "', '" & _
                        Me.txtMATERIALID & "','" & _
                        Me.txtMATERIALGROUPID & "', '" & _
                        Me.txtMACHINEID & "', '" & _
                        Me.txtMACHINEGROUPID & "', '" & _
[color=blue]                        Me.txtTECHNOCLASSID & "'," & a & ")"[/color]


'Einfügen in der Tabe.TMS_TDM_TOOLTECHNOLIST
strSQL = "INSERT INTO TMS_TDM_TOOLTECHNOLIST ([TOOLID],CUTSPEED,FEEDPTOOTH,TOOLTECHNOLISTPOS,IDTYPE,TOOLTECHNOPOS)" & _
                "VALUES ('" & Me.txtTOOLID & "'," & _
                        str(Me.txtCUTSPEED) & "," & _
                        str(Me.txtFEEDPTOOTH) & ", " & _
[color=blue]                        str(Me.cboTOOLTECHNOLISTPOS) & " ,2," & a & ")"[/color]


'Einfügen in der Tabe.TMS_TDM_TOOLTECHNO
strSQL2 = "INSERT INTO TMS_TDM_TOOLTECHNO ([TOOLID],[TECHNOCLASSID],IDTYPE,TOOLTECHNOPOS)" & _
                "VALUES ('" & Me.txtTOOLID & "','" & _
[color=blue]                        Me.txtTECHNOCLASSID & "',2," & a & ")"[/color]
Freundliche Grüße
MaggieMay

Youssef

funktionniert einwandfrei :) Danke

MaggieMay

Wenn diese Position allerdings in verschiedenen Tabellen steht, muss sichergestellt werden, dass es stets dieselbe ist. Andernfalls muss sie auch mehrfach ermittelt werden.

Warum hast du so viele Tabellen zu einer ToolID-Position?
Freundliche Grüße
MaggieMay

Youssef

Hallo,
danke erstmal für die Antwort gestern.
Ich habe eingentlich nichts zu tun mit den Tabellen, die Tabellen gehören zu dem Programm TDM und die Kann man nicht ändern.
Meine Aufgabe war, dass ich darauf zugreife und die Daten ändern bzw. einfüge. deswegen hatte ich auch am Anfang sehr große Schwierigkeiten euch das nah zu bringen bzw. erklären.
Auf jedenfall Danke für die Unterstützung
LG
Youssef