Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Youssef am Juni 22, 2015, 13:53:19

Titel: Daten existieren Bereit
Beitrag von: Youssef am Juni 22, 2015, 13:53:19
Hallo,
ich will Daten vor einfügen in meiner gewünschte Tabelle Prüfen , ob die schon vorhanden sind .
gibts ein Code dafür ?

LG
Youssef
Titel: Re: Daten existieren Bereit
Beitrag von: Youssef am Juni 22, 2015, 14:53:10
meine tabelle  schaut ungefär so aus:
ToolID   CUTSPEED
12345     50

wenn ich jetzt unter 12345 was speichere und zwar den gleichen Wert 50 soll er ein message mit  "der Datensatz ist schon vorhanden!"
ich habe im internet was gefunden und zwar mit dem Code :

If DCount("CUTSPEED", "MeineTabelle", "TOOLID ") Then
        MsgBox " die Schnittdaten existieren bereits", vbExclamation + vbOKOnly, "Information"
   End If


funktioniert leider nicht .
Kann mir jemanden weiter helfen

Lg
Youssef
Titel: Re: Daten existieren Bereit
Beitrag von: DF6GL am Juni 22, 2015, 15:44:58
Hallo,

und was wäre, wenn Du Dich darum gar nicht kümmerst?  Wenn der gleiche Wert wie vorhanden noch mal an der selben Stelle gespeichert wird, ist das ganze Prozedere doch eh egal...

Etwas Anderes wäre es, wenn der Wert bei einer anderen ID gespeichert werden soll und nur insgesamt einmal vorkommen darf.  Dann wäre das Setzen eines eindeutigen Index auf das Feld "CUTSPEED" angebracht.
Titel: Re: Daten existieren Bereit
Beitrag von: Youssef am Juni 22, 2015, 16:16:29
Hallo Franz,
ich verstehe nicht was du grade meinst .
in meiner Access Anwendung will ich daten von vorhanden ToolID auf einen Neuen ToolID übertragen.
Alles ist soweit gut gelaufen, kann die Daten nun übertragen ohne Probleme.
Was mir noch fehlt ist nur prüfen ob die Daten schon vorhanden damit wir nicht die Daten wiederholt schreiben.
Die neue Daten die ich zu der neuen ToolID einfüge werden immer zeilweise eingefügt werden.
Titel: Re: Daten existieren Bereit
Beitrag von: DF6GL am Juni 22, 2015, 16:41:56
Hallo,

wenn "ToolID" der Primärschlüssel in der Tabelle ist, dann ist es egal, ob du weißt, dass der Wert in "CUTSPEED" bei derselben ID mit demselben Wert überschrieben wird oder nicht...



Zitatmeine tabelle  schaut ungefähr so aus:
diese Aussage nützt wenig (solltest Du nun so langsam erkennen und die Sachlage GENAUER/VOLLSTÄNDIG und namentlich beschreiben) . "Ungefähr" funktioniert nicht in einer DB ....

Wie auch immer, so kannst Du erkennen, ob der eingegebene Wert (in "CUTSPEED" in einem Form-Textfeld) im Datensatz , der durch ToolID bestimmt ist, schon abgespeichert ist:

Sub CUTSPEED_BeforeUpdate(Cancel as Integer)
If nz(Dlookup( "CUTSPEED","tblDeinegewünschteTabelle","ToolID= " & Me!ToolID),0) = Me!CUTSPEED.Text Then
MsgBox "Die Schnittdaten existieren bereits", vbExclamation + vbOKOnly, "Information"
Cancel =true
Me.Undo
End If
End Sub

Titel: Re: Daten existieren Bereit
Beitrag von: MaggieMay am Juni 22, 2015, 23:15:29
Hallo,
Zitat von: Youssef am Juni 22, 2015, 14:53:10wenn ich jetzt unter 12345 was speichere und zwar den gleichen Wert 50 soll er ein message mit  "der Datensatz ist schon vorhanden!"
warum richtest du keinen eindeutigen (Mehrfelder-) Index ein, um mehrfache Kombinationen zu verhindern?!
Titel: Re: Daten existieren Bereit
Beitrag von: Youssef am Juni 23, 2015, 17:48:48
Hi,
TOOlID ist bei mir ein Primärschlüssel.
hast du recht mit dem überschreiben.
In meinem Fall habe ich dass so  Programmiert. wenn das Werkzeug(TOOLID) neue werte bekommt wirds eine neue Datensatz darunterhinterlegt.
Das mit dem überschreiben wirds jetzt nicht der fall sein, also werden die Daten nochmal wiederholt geschrieben wenn ich die gleichen werte nochmal eingebe.

Mein wunsche wäre vor dem einfüge Code, dein Vorgeschlagenen Code zum meinem Code anzupassen und damit   Prüfen ob der Wert in Schnittgeschwindigkeit (txtCUTSPEED in die Eingabemaske) ähnlich wie CUTSPEED(Feld in meiner Tabelle) unter Neues Komplettwerkzeug (txtTOOLID in die Eingabemaske) bzw. TOOLID in meiner Tabelle.
Hir ist mein Code zum einfüngen von Daten:

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) & ", 1 ,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 & ")"
Titel: Re: Daten existieren Bereit
Beitrag von: Youssef am Juni 23, 2015, 17:50:39
hi ,
was vergessen
Titel: Re: Daten existieren Bereit
Beitrag von: DF6GL am Juni 23, 2015, 20:07:18
Hallo,

also, wenn
ZitatTOOlID ist bei mir ein Primärschlüssel
ist, dann fress' ich einen Besen....  ::)


.
.
.
If Dcount( "*","TMS_TDM_TOOLTECHNOLIST","ToolID= " & Me!txtToolID & " And Cutspeed = " & str(Me!txtCUTSPEED)) >0 Then
MsgBox "Die Schnittdaten existieren bereits", vbExclamation + vbOKOnly, "Information"

Else

'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) & ", 1 ,2," & a & " )"

End If
.
.
.
Titel: Re: Daten existieren Bereit
Beitrag von: Youssef am Juni 24, 2015, 14:28:58
Hi,
ich habe den Code nochmal was geändert fuktioniert super danke dir :).
eine Frage :
bei diesem Code war das Prüfen nur bei der Wert von CUTSPEED gewesen,
wie wäre dann das mit mehr als ein Wert bsp. noch FEEDPTOOTH dazu und zwar alle gleichzeitig prüfen :
If Dcount( "*","TMS_TDM_TOOLTECHNOLIST","TOOLID= " & Me!txtTOOLID & " And CUTSPEED = " & str(Me!txtCUTSPEED)) >0 Then
MsgBox "Die Schnittdaten existieren bereits", vbExclamation + vbOKOnly, "Information"
elseif If Dcount( "*","TMS_TDM_TOOLTECHNOLIST","TOOLID= " & Me!txtToolID & " And FEEDPTOOTH = " & str(Me!txtFEEDPTOOTH)) >0 Then
MsgBox "Die Schnittdaten existieren bereits", vbExclamation + vbOKOnly, "Information"
.
.
.
Else

'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) & ", 1 ,2," & a & " )"

End If
End If
Titel: Re: Daten existieren Bereit
Beitrag von: Youssef am Juni 24, 2015, 16:31:52
hat sich erlidigt ;-) Danke leute
LG
Youssef