PDA

Vollständige Version anzeigen : Verschiebe - System


tetex
05.06.2012, 21:35
Hallo office-forum.net,

mich würd es gerne mal interessieren ob sowas gehen würde


habe 2 bzw. mehrere Stationen
z.B

Station1
Station2
Station3
Station4

gearbeitet wird immer mit Auftragsnummer
Auftragsnummer im Formular (Eingabe-Feld) nötig

Station1 gibt Auftragsnummer ein so ist halt Station1 zu sehen
Station2 gibt selbe Auftragsnummer ein
Station1 wird zu Station2 etc ...
Das alles soll natürlich Automatisch laufen.

Was denkt ihr, würde das gehen ?


MfG

hcscherzer
05.06.2012, 22:16
Was ist denn unter "Station" zu verstehen?
Ein abstraktes Objekt?
Ein Prozess?
Ein konkreter Arbeitsplatz?

tetex
05.06.2012, 22:19
Hallo,

man könnte das als Arbeitsplatz definieren ist eigentlich "LAGERPLATZ" gemeint.

mfg

maikek
05.06.2012, 22:28
@Hans-Christian
Handelt sich wohl um die Neuauflage von:
http://www.ms-office-forum.net/forum/showthread.php?t=289956
@tetex
Es wäre besser, du bleibst bei deinem alten Thema/Thread. Dann muss man nicht die gleichen Fragen ein zweites Mal stellen und die gleichen Antworten nochmal geben :rolleyes: .
Hast du überhaupt versucht, das zu verstehen und anzuwenden, was dir dort vorgeschlagen wurde?
maike

tetex
05.06.2012, 22:56
Hallo,

das hat sich schon erledigt.
http://www.ms-office-forum.net/forum/showthread.php?t=289956

tetex
06.06.2012, 08:05
Hallo,

könnt ihr mir da nicht weiterhelfen ? an Beispielen

MfG

Atrus2711
06.06.2012, 08:06
Hi,

soll der "Übergabeverlauf" gespeichert werden, oder geht es nur um den aktuellen Standort eines Auftrags?

maikek
06.06.2012, 08:16
Ich stelle mir das mal so vor: an jeder Station sitzt ein Mensch, der die Auftragsnummer in seinen Rechner eingibt,
wenn der Auftrag ankommt.

Variante 1: Für jede Station ein neuer Datensatz (Verlauf)
Bei Eingabe (Ereignis Nach Aktualisierung des Eingabefeldes) dann:
strSQL = "INSERT INTO DeineTabelle(Auftragsnummer, Station, Zeit) VALUES (" & Me!Eingabefeld & ", 'Station 1', " & Now())
CurrentDB.Execute strSQL, dbFailOnError

Variante 2: Nur Station des immer gleichen Datensatzes ändern (Stand)
Bei Eingabe (Ereignis Nach Aktualisierung des Eingabefeldes) dann:
strSQL = "UPDATE DeineTabelle SET Station = 'Station 1' WHERE Auftragsnummer = " & Me!Eingabefeld
CurrentDB.Execute strSQL, dbFailOnError

maike

tetex
06.06.2012, 08:50
Hi,

@Atrus2711
verkehrt ist es nicht wenn verlauf gespeichert wird zum nachvollziehen.
Aber in wirklichkeit brauche ich nur den Status wo sich grad befindet.

@maikek
du hast es erkannt.
ich versuch mal dein code
hoffe das ich es hinbekomme.

//EDIT:
Könntest du mir evt. ein beispiel Formular erzeugen ?
Wäre natürlich super
MfG

Atrus2711
06.06.2012, 11:21
Könntest du mir evt. ein beispiel Formular erzeugen ?
Wäre natürlich super
Hast du es probiert? Wenn nein, tu das. Wenn ja, wo klemmts? Das ist ein Hilfeforum, kein Machs-mir-Forum.

tetex
06.06.2012, 12:52
Hi,

natürlich habe ich es versucht.

1. Klappt.

Private Sub Text3_AfterUpdate()
'strSQL = "INSERT INTO Tabelle1 (Auftrag, Station) VALUES (" & Me.Text3 & ", 'Station 1')"
'CurrentDb.Execute strSQL, dbFailOnError

End Sub


2. klappt nicht

Private Sub Text3_AfterUpdate()
strSQL = "UPDATE Tabelle1 SET Station = 'Station 1' WHERE Auftrag = " & Me.Text3
CurrentDb.Execute strSQL, dbFailOnError
End Sub


bei der 2. pos. bekomme ich eine fehlermeldung.

Datentypen in Kriterienausdruck unverträglich. (Fehler 3464)
Mit dem Kriterienausdruck in einer Find-Methode soll ein Feld mit einem Wert verglichen werden, dessen Datentyp nicht mit dem Datentyp des Feldes verträglich ist.

Atrus2711
06.06.2012, 12:57
Wie sind denn die Datentypen der beiden Felder?

tetex
06.06.2012, 13:00
Wie meinst du das?

also ich habe 2 Formular erstellt.

mit der Formular 1 klappt eintrag Status wird auf Station 1 eingetragen.
Formular 2 habe ich kopiert und den wert strSQL auf UPDATE umgschriebn.


MfG

hcscherzer
06.06.2012, 13:01
Hallo, tetex.
Klappt denn das erste Beispiel in #11 auch ohne die Kommentar-Apostrophen? ;)

tetex
06.06.2012, 13:14
hm ?


welche Beispiel?

stuz1
06.06.2012, 13:18
Klappt denn das erste Beispiel in #11 auch ohne die Kommentar-Apostrophen? :boah:

Was steht denn in Text3? Eine Zahl? Ein Wort?

Access macht da Unterschiede!

tetex
06.06.2012, 13:20
AAAaah jetzt weiss ich was du meinst *ups*

Also bei eingabe von zahl bekomme ich ein fehler
gebe ich ein Text ein, dann gehts. Aber sehe dann keine änderung in der Tabelle.

Atrus2711
06.06.2012, 13:28
Können wir denn jetzt mal die Datentypen der Felder erfahren?! :rolleyes:

tetex
06.06.2012, 13:30
im Text3 habe ich Station eingegeben.

stuz1
06.06.2012, 13:34
Klappt denn das erste Beispiel in #11 auch ohne die Kommentar-Apostrophen?

Die Hochkomma vor dem Code bewirken dass dieser nicht ausgeführt wird (sollte im VBA-Editor ja dann auch grün angezeigt werden?)

Mit welcher Prozedur gibt es denn nun schwierigkeiten? Mit der Updateroutine?

strSQL = "UPDATE Tabelle1 SET Station = 'Station 1' WHERE Auftrag = " & Me.Text3


Dieser SQL-String sucht in der Tabelle "Tabelle1" den Auftrag mit der Bezeichnung in Text3 (alles sehr schlüssige Bezeichnungen)

Was steht denn in der Tabelle "Tabelle1" unter Auftrag? Steht da zb. 12001? Oder steht da A-12001?

Was steht denn jetzt im Textfeld Text3?

Und woher kommt der Wert des Feldes Auftrag in der Tabelle? ist das ein Textfeld? Zahlenfeld? Nachschlagefeld? Wenn es ein Nachschlagefeld ist (also kommt der Wert Auftrag aus einer anderen Tabelle?) welcher Wert ist dann in der Tabelle abgespeichert?

Wenn es eine Zahl ist dann schreibe:

strSQL = "UPDATE Tabelle1 SET Station = 'Station 1' WHERE Auftrag =" & Me.Text3

Und wenn es Text ist dann schreibe

strSQL = "UPDATE Tabelle1 SET Station = 'Station 1' WHERE Auftrag ='" & Me.Text3 & "'"

tetex
06.06.2012, 14:02
Hi,

1. Formular 1
Funktioniert

ich gebe im Textfeld3. eine zahl ein z.B 50 (Auftrag)
Status wird automatisch eingetragen (Station 1) wird gesetzt.

2. Formular 2
gebe ich 50 ein soll der Text Status den Feld von Station 1 nach Station 2 ändern. Bzw. eine neue Tabelle erstellen

oder jede Formular bekommt diesen code zugewiesen

'strSQL = "INSERT INTO Tabelle1 (Auftrag, Station) VALUES (" & Me.Text3 & ", 'Station 2')"
'CurrentDb.Execute strSQL, dbFailOnError

'strSQL = "INSERT INTO Tabelle1 (Auftrag, Station) VALUES (" & Me.Text3 & ", 'Station 3')"
'CurrentDb.Execute strSQL, dbFailOnError

hcscherzer
06.06.2012, 14:05
hm ?
welche Beispiel? :entsetzt:


Klappt denn das erste Beispiel in #11 auch ohne die Kommentar-Apostrophen?

@stuz1: das Zitat war von mir in #14 und und Du hast wohl den Smilie übersehen?

Die Hochkomma vor dem Code bewirken dass dieser nicht ausgeführt wirdOha.

gebe ich 50 ein soll der Text Status den Feld von Station 1 nach Station 2 ändern. Bzw. eine neue Tabelle erstellen
Das sind allerdings Anforderungen, die so bislang noch nicht sichtbar waren ... ;)

stuz1
06.06.2012, 14:23
Habe dir mal ein PAAR Änderungen eingebaut...

Mal so ein paar Grundlegende Dinge:

Die Formular hatte gebundene Felder an die Tabelle, das kann nicht gehen. Habe die Felder in den Formularen auf ungebunden geändert.

******************************************************************************** **************
EDIT: Und dem Feld Auftrag noch einen eindeutigen Index verpasst... einen Auftrag kann es ja wohl nur einmal geben!!!
******************************************************************************** ****************

Habe in der Tabelle dem Datum einen Standardwert gegeben (Jetzt())

Bei ändern auf Station 2 (und 3 und 4 usw?) musst du dann aber noch in deiner Updateroutine reagieren...

Mit Message-Boxen ein bisschen auf die Aktionen reagiert.

Ein Startform eingebaut....

Bitte genau anschauen, analysieren, lernen und fragen.....

Gruß

Stefan

Edit: Das ganze Gerüst von mir dient nur der Veranschaulichung wie es gehen kann.... da musst du jetzt gründlich drüber arbeiten und überlegen welche Fehler könnten auftreten, und wie fange ich Sie ab.... MIt der Updateroutine fängst du zum Beispiel noch nicht ab ob es überhaupt einen passenden Auftrag gibt!

stuz1
06.06.2012, 14:26
@stuz1: das Zitat war von mir in #14 und und Du hast wohl den Smilie übersehen?



Nein Nein, das kam falsch an... ich hatte schon gesehen dass das von dir war... ich selber hatte es ja gar nicht gesehen und bin aufgrund deines Zitats ans lächeln gekommen und musste unbedingt was dazu schreiben.... Sorry Tetex, war nicht böse gemeint.....

tetex
06.06.2012, 14:33
Ah Danke.
Jetzt weiss ich auch was ich falsch gemacht habe.

strSQL = "UPDATE Tabelle1 SET Station = 'Station 1' WHERE Auftrag ='" & Me.Text3 & "'"


MfG

stuz1
06.06.2012, 14:37
Das ist nicht der einzige Fehler.... und auch nicht der größte.....

Die Formularfelder waren an die Tabelle gebunden....

Außerdem sollte es beim Updatebefehl für Station 2 wohl eher so sein:

strSQL = "UPDATE Tabelle1 SET Station = 'Station 2' WHERE Auftrag ='" & Me.Text3 & "'"

tetex
06.06.2012, 14:43
Ja, das ist mir schon klar.
Ich hatte einfach nur beispiel DB aufgebaut.

Wie siehts denn bei Doppelten Einträgen aus?

Die von Ihnen vorgenommenen Änderungen an der Tabelle konnten nicht vorgenommen werden, da der Index, Primärschlüssel oder die Beziehung mehrfach vorkommende Werte enthalten würde. (Fehler 3022)

Atrus2711
06.06.2012, 14:47
Gegen den Primärschlüssel oder eindeutige Indizes kommst du nicht an. Da hilft nur, diese Duplikate zu vermeiden oder (notfalls) auf den 3022-Fehler zu reagieren.

Meinst du nicht, eine geordnete Einführung in Datenbanken hülfe dir weiter, als -zig parallele Stränge hier im Forum...?!

stuz1
06.06.2012, 14:52
Den Index habe ich erst eingebaut.... ich denke es macht keinen Sinn einen Auftrag 2x im System zu haben? Nimm den Index wieder raus und du kannst den Aufrag auch 100 mal eintragen....

Oder kann der Auftrag an mehreren Stationen gleichzeitig sein? Dann wird das komplette Ding aber einiges komplizierter....

tetex
06.06.2012, 15:07
Nicht wirklich. Ich hatte es nicht erwähnt.
Es ist ein Kreislauf. Nein selbe Auftrag liegt immer nur an einer Station.

Frage: Kann man eigentlich Protokollieren, wenn man an einer Station vergessen hat einzutragen ?
bzw. ein error log in der Tabelle zu erstellen ?

Atrus2711
06.06.2012, 15:12
Wenn es die Statuswerte 1,2,3,4,5 gibt, aber keinen Verlauf, dann könntest du allenfalls prüfen, ob bei einer Änderung der nächste Statuswert eingetragen wurde (also von 1 auf 2, von 2 auf 3 etc).

Wenn die Reihenfolge aber offenbar so zwingend ist, würde ich das eh mit einem "Gibs-weiter-"Button erledigen, der dann maschinell die nächste Station einträgt. Und die nächste ist die Aktuelle +1. Das muss man dann nicht manuell eintragen und prüfen, sondern gleich richtig vorgeben.

tetex
06.06.2012, 18:21
Hallo,

kann ich diesen code für mein DB anwenden fürs Protokollieren?


Private Sub RecordChanges(DeleteRecord As Boolean)
Dim C As Control, T As String, FO As String, FN As String

' dies ist nur ein Beispiel - speziell die Handhabung der NULL-Werte kann man
' natürlich auch ganz anders gestalten!

For Each C In Me.Controls
T = ""
On Error Resume Next
T = C.ControlSource
On Error GoTo 0
If T <> "" Then
If DeleteRecord Then
FO = Left(Nz(C.Value, ""), 255)
If FO = "" Then
FO = "<NULL>"
FN = "<NULL>"
Else
FN = "<DELETED>"
End If
Else
FO = Left(Nz(C.OldValue, ""), 255)
If FO = "" Then FO = "<NULL>"
FN = Left(Nz(C.Value, ""), 255)
If FN = "" Then FN = "<NULL>"
End If
If FN <> FO Then
CurrentDb.Execute "INSERT INTO Tabelle1 (Auftrag, Status, Datum, alterWert) " & _
" VALUES ('" & C.Name & "','" & FO & "','" & FN & "',Now())"
End If
End If
Next C
End Sub

stuz1
06.06.2012, 19:24
kann ich diesen code für mein DB anwenden fürs Protokollieren?

Ernsthafte Frage?

Ich komme mir jetzt etwas verarscht vor... Weißt du eigentlich was deine Datenbank nachher machen soll? Hast du einen Plan auf Papier was du wann erreichen möchtest? Deine Datenbank (zumindest die Demo) hat 1 Tabelle mit 4 Feldern und 2 Formulare.... mit insgesamt je einem Feld... und jetzt bringst du einen Code der sehr Komplexe Aufgaben übernehmen soll?

Der Code ist doch nicht von dir? Weißt du was er annähernd macht? Was erwünscht du dir denn als Ergebnis? Wie wirst du die Ergebnisse später auswerten?

Mit kommt es so vor als dass du jetzt versuchst eine Boing zu fliegen und hast noch nicht mal das Handbuch zum bedienen der Sitzverstellung auf dem Pilotenplatz gelesen.... Das hört sich böse an. Aber wie willst du hier je auf einen grünen Zweig kommen?

Es gibt tolle Bücher und Online-Tutorials wie man ein Access-Projekt angeht... da ist mal ein paar Wochen lernen angesagt...

Ich Klinke mich hier aus... Sorry... viel Erfolg weiterhin....

Stefan

tetex
06.06.2012, 20:37
Natürlich weiss ich was mein DB machen soll.
Ich bat nur um eine Hilfe.
Ihr habt mir ja auch super geholfen auch wenn ich nur bissschen verstanden habe.
Aber ich verstehe immer besser, wenn ich bestehende beispiele sehen kann.

Danke.

ebs17
06.06.2012, 20:51
Du hast eine Aufgabe, Du hast einen Code: Probiere es aus!
Was hindert Dich daran?

tetex
09.06.2012, 09:15
Hallo,

ich würde gerne das ganze noch erweitern

strSQL = "INSERT INTO Tabelle1 (Auftrag, Benutzername, Station) VALUES (" & Me.Text3 & "," & Me.Benutzername & ", 'Station 1')"
CurrentDb.Execute strSQL 'dbFailOnError


bekomme fehlermldung
es wurden zu wenige parameter angegeben
Was habe ich falsch eingegeben?

MfG

Thomas Möller
09.06.2012, 09:21
Hallo!

bekomme fehlermldung
es wurden zu wenige parameter angegeben
Was habe ich falsch eingegeben?

Der Feldname Benutzername legt nahe, das es sich bei dem Feld um ein Feld mit dem Datentyp Text handelt. In diesem Fall musst Du den einzutragenden Wert in Hochkomma einschließen:

strSQL = "INSERT INTO Tabelle1 (Auftrag, Benutzername, Station) VALUES (" & _
Me.Text3 & ", '" & Me.Benutzername & "', 'Station 1')"

Welchen Datentyp hat eigentlich das Feld Auftrag?

HTH

tetex
09.06.2012, 12:13
Hallo, Danke es hat geklappt.

Auftrag hat den Wert Zahl.

MfG

Thomas Möller
09.06.2012, 12:22
Hallo!

Danke es hat geklappt.

Dann solltest Du Dir jetzt noch die Mühe machen, die verwendeten Steuerelemente aussagekräftig zu benennen:
http://www.team-moeller.de/?Tipps_und_Tricks:Regeln_und_Hinweise_fuer_gutes_VBA:Steuerelemente_aussagekraef tig_benamsen

Dieser Code wir dann leichter verständlich, weil man nicht mehr raten muss, was mit Text3 gemeint ist:

strSQL = "INSERT INTO Tabelle1 (Auftrag, Benutzername, Station) VALUES (" & _
Me.Text3 & ", '" & Me.Benutzername & "', 'Station 1')"

CU

tetex
09.06.2012, 15:10
kann ich bei Update methode mehrere Felder in der Tabelle ändern
wenn

strSQL = "UPDATE Auftrag SET Station= 'Station 2' WHERE Auftrag ='" & Me.Text5 & "'"
CurrentDb.Execute strSQL, dbFailOnError
MsgBox "Der Auftrag " & Me.Text5 & " wurde auf Staion 2 geändert"

tetex
09.06.2012, 15:19
Ah, ich habs

Station= 'Station 2', Feld2= 'x'