[gelöst] Fehlermeldung im Attain

4. April 2006 16:54

Gibt es eine Möglichkeit Fehlermeldungen aus Attain (z.B. "Ein anderer Anwender hat die definition der Tabelle..." zu protokollieren?
Zuletzt geändert von mespelage am 10. April 2006 08:20, insgesamt 1-mal geändert.

4. April 2006 18:27

Leider nicht.
Die spezielle Meldung kommt aber mittlerweile schon, wenn sich jemand die Tabellenstruktur im Designer lediglich anschaut, ohne etwas zu ändern ( bei 2.xx war dies anders, dort lag dann tatsächlich eine Änderung vor), es macht also wenig Sinn, diese zu protokollieren.

5. April 2006 07:51

Das war mir bisher auch noch nicht bekannt!

@mespelange
Da wie Kowa geschrieben hat,
...wenn sich jemand die Tabellenstruktur im Designer lediglich anschaut, ohne etwas zu ändern...

Würde ich dir Empfehlen, möglichst wenigen Usern "Super" Rechte zu geben, und allen anderen (Die die Tabellenstruktur einsehen dürfen) nahe legen, das Sie eine Kopie der Datenbank zum einsehen Entwickeln nutzen sollen!
So währe zwar dein Problem nicht behoben, aber die Anzahl der Fehlermeldungen sollte weniger werden.
Gruß Mikka

5. April 2006 08:08

Es geht mir nicht um diese Fehlermeldung, das sollte nur ein Beispiel sein.
Das Problem ist folgendes: Wir nutzen in der Produktion Funkscanner um die produzierte Ware möglich zeitnah im System zu haben.
In einer Form auf dem OnTimer Trigger scannen wir ein verzeichnis ab, in dem die Daten des Scanners abgelegt sind. fehlt nun für die Buchung im System zB eine Buchnugnsgruppe, oder eine Tabelle ist zur Zeit gesperrt durch jemand anderen gibt das Systm eine Fehlermeldung und steht. Die Leute aus der Produktion können die Meldung zwar quitieren, geben sie allerdings nicht weiter an die entsprechenden Personen, die den Fehler abstellen könnten. Später heisst es dann: Die Scanner laufen ja nie richtig". Ich habes es schon mit Schulungen und allem möglichen versucht, ohne sichtbaren Erfolg. Vielleicht hilft da doch nur Lohnabzug?!?

5. April 2006 08:39

In deinen Fall, würde ich die Programmierung so anpassen, dass das System zuerst Prüft, ob die notendigen Daten Verfügbar sind, wenn nicht, werden diese in eine Fehler- oder Ereignisstabellle geschrieben.
Denkbar währe auch, das wenn notwendige Daten (z.B. Buchungsgruppe) noch nicht Verfügbar sind, als sogenannte "Dummy" Datensätze eingelesen werden.
Der zuständige Mitarbeiter kann dann die Dummy Datensätze nach dem Bereitstellen der Daten Buchen bzw. weiter Verarbeiten.

Wir haben ebenfalls Scannerdaten die mit einem Timer eingelesen werden. Damit dieses System möglichst Fehlertollerant läuft, werden alle Ergebnisse protokolliert, gemeldet und bei Bedarf können wir Handeln.

Bei uns muß eine Kopfzeile und entsprechende Fußzeilen Vorhanden sein. Manchmal kommt es vor, das Fußzeilen ankommen und noch kein Kopf vorhanden ist, in diesem Fall, erstellt das System automatisch eine "Dummyzeile" im Kopf!

Zu den gesperrten Tabellen:
Der LOCKTABLE Befehl gibt mehrere Möglichkeiten, wie ein anderer User abgearbeitet wird, der auf eine gesperrte Tabelle zugreifen will.
Siehe hierzu im C/SIDE Reference Guide!
Da ich selbst bisher noch nicht mit diesen Parametern gearbeitet habe, würde ich die nahe legen andere Forenmitglieder um weitere Hilfestellung zu Bitten.
Gruß Michael

5. April 2006 09:03

@Mika
>>In deinen Fall, würde ich die Programmierung so anpassen, dass das >>System zuerst Prüft, ob die notendigen Daten Verfügbar sind, wenn >>nicht, werden diese in eine Fehler- oder Ereignisstabellle geschrieben.

Das kannst Du in diesem Fall nicht prüfen. Wenn der Scanner via Tastaturpuffer Daten an Navision sendet und Navision dann eine Fehlermeldung (Ein anderer Anwender...) bringt, dann ist alles zu spät.

Wir hatten bei einem Kunden das gleiche Problem.
Unsere Lösung war die folgende:
Ein kleines Delphi-Programm, dass die die ganze Zeit Navision überwacht.
Sobald dann eine Fehlermeldung erscheint, "klickt" das Programm dieses Meldungen weg und weiter gehts.
Gruss

5. April 2006 09:25

mespelage hat geschrieben:In einer Form auf dem OnTimer Trigger scannen wir ein verzeichnis ab, in dem die Daten des Scanners abgelegt sind.


@martinst
Bei einem Scanner der Daten via Keyboard Schnittstelle sendet, gebe ich dir zum Teil Recht.
Hier könnte jedoch der OnValidate Trigger abgefangen werden. Dieses mach ich auch bei unseren Scannern, die an der Tasttatur zwischengeschleift sind.
Die Meldung Ein anderer Anwender..., basiert auf einem anderen Problem, da ist es tatsächlich so, das alles zu spät ist.!
Hier muss gewähleistet sein, das keiner an den Tabellen "rumfingert" bzw. dein Vorschlag mit dem Dephi Programm ist gut, aber wenn keiner bei mespelange im Haus Delphi kann, kostet das zusätzliches Geld!

Bei uns im Haus ist es ebenfalls so, wenn ich die Tabellendefinition geändert habe und speichern will. muss ich vorher das Form mit dem Timer beenden!

mespelage, hat geschrieben, das er eine Datei aus einem Verzeichniss Importiert.
Daher sollte eine Überprüfung der Daten ohne weiteres machbar sein!

Kleine Frage an dich, kennst du dich mit dem LOCKTABLE aus?
Würde mich auch Interessieren wie mit diesem gearbeitet werden kann! (Ich kenne nur den "schlichten" LOCKTABLE ohne weitere Parameter!)
Gruß Mikka

5. April 2006 09:34

@Mika
Da gibt es nicht viel zu sagen:

Locktable(TRUE)
Wartet:
>>The system wait until the table is unlocked, if another application >>already has locked the table

Locktable(FALSE)
Bricht sofort mit einem Fehler ab.
>>LOCKTABLE end with a run-time error, if another application already >>has locked the table

Ich habe mit Locktable nicht besonders gute Erfahrungen gemacht und verwende es nur in wirklichen Ausnahmefällen.
In einer Webshop-Anwendung in Verbindung mit dem NAS habe habe ich die ganze Problematik mit einer Schleife gelöst.

Code:
//Beispiel
repeat
  if not Rec.Modify then
    AnzahlVersuche  := AnzahlVersuche + 1
  else
    ModifyOK := TRUE;
until (AnzahlVersuche = 10) or (ModifyOK)


An einem C/Side-Kurs vor einigen Jahren haben wir einmal gelernt:
Verwende LockTable nur wenn es nicht anders geht!!!

Gruss

5. April 2006 09:53

:-)
Danke.
Dein Codebeispiel um den LOCKTABLE zu umgehen ist gut.
Ich Persönlich verwende keinen LOCKTABLE (Wir haben eine Nativ-DB!) ausser in den Buchungsroutinen. Alles andere überlasse ich der Optimistic Currency oder wie das noch heißt!

Gruß Mikka

5. April 2006 10:08

@martinst

Hallo martinst

kammst du mir mehr zu deinem Delphiprogramm sagen?

5. April 2006 10:10

Was willst Du wissen?

5. April 2006 10:15

ich habe leider keine Ahnung von Delphi.
Kann man das auch anders lösen?
Wie findest du das PopUp-Fenster
kannst du mir vielleicht ein Beispiel nennen?
Kann ich das Programm eventuell käuflich erwerben?

5. April 2006 10:41

>>ich habe leider keine Ahnung von Delphi.
Ist nicht so schlimm :lol:
>>Kann man das auch anders lösen?
Mit jeder anderen Sprache (z.B. VB)
>>Wie findest du das PopUp-Fenster
Zuerst muss das Fenster mit einer Funktion FindWindowByTitle gefunden.
Danach findest Du ein entsprechendes Kindfenster.
>>kannst du mir vielleicht ein Beispiel nennen?
>>Kann ich das Programm eventuell käuflich erwerben?
Das Programm ist für Navision-Financials geschrieben worden.
Das ganze könnte man aber auch für Attain anpassen.

Ich schaue mir den Code wieder mal an.

Ich melde mich.

5. April 2006 15:02

@mespelage
Hats funktioniert?

6. April 2006 14:15

@martinst
martinst hat geschrieben:>>Wie findest du das PopUp-Fenster
Zuerst muss das Fenster mit einer Funktion FindWindowByTitle gefunden.
Danach findest Du ein entsprechendes Kindfenster.


Da ich ein ähnliches Problem (In Financials) habe, könnte deine Variante mir auch helfen. Währst du so nett und würdest mir ein CodeBeispiel aufführen?
Fehlgeschlagene Anmeldungen Dokumentieren,Doppelte Anmeldung
Da wie du beschrieben hast ein Fenster nach seinen Titel abgefangen weden kann, währe das die Lösung zu meinem Problem.

Gruß Mikka

6. April 2006 14:22

@Mika

Mein Programm nützt Dir nichts.
Dieses Programm ist nicht in Navision sondern in Delphi mit Win32-Api Aufrufen programmiert.
Weiter erfüllt es einen ganz anderen Zweck.
Dieses Programm überwacht ein Navision-Fenster und schliesst automatisch alle erscheinenden Messages, Confirm usw.

Gruss

[gelöst] Fehlermeldung in Attain

10. April 2006 07:33

Das Delphiprogramm funktioniert wunderbar. Genau das was ich gesucht habe. Vielen Dank an Martin

Michael