budders
Goto Top

Lagerverwaltung Programm

Servus,

Ich habe den Auftrag bekommen ein Programm für ein Windows CE 5.0 System zu schreiben.
Ich denke eine Flowchart kann am besten beschreiben was die Funktion sein soll.
faba120487506019af718aa95a4e2507

Also die SQL Datei wird vorher auf das Gerät übertragen, da wir keine Möglichkeit haben mit dem Gerät direkt auf die Datenbank zuzugreifen (Gerät nicht WLan fähig und ein AP ist ebenfalls nicht vorhanden.)

Habt ihr ein Paar Tips/Ansätze wie ich da am besten ran gehe?
VB.Net? Visual C++ oder C# ?

Ich zerbreche mir seit Tagen den Kopf aber komme zu keinem guten Schluss...

Ich hoffe hier kann mir jemand helfen, sonst werd ich das ganze wohl abgeben müssen.

MfG Budders/Gerrit face-smile

Content-ID: 216289

Url: https://administrator.de/contentid/216289

Ausgedruckt am: 25.11.2024 um 16:11 Uhr

certifiedit.net
certifiedit.net 06.09.2013 um 10:52:48 Uhr
Goto Top
Das Ding WLAN Fähig machen? oder ggf LAN?

Soll die Lagerverwaltung nur auf dem Gerät laufen? Wie wird gesichert?

Soviel zur "Hardware + Logistik".

Zum Thema Code: Nimm das, was das Gerät kann und du am besten kannst.
Budders
Budders 06.09.2013 um 10:56:47 Uhr
Goto Top
Es ist kein WLAN AP vorhanden.
LAN anschluss hat es nicht und wäre ebenfalls sehr unkompfortabel das Gerät an nem Kabel durch die ganze Halle zu schleppen.
:/

MfG
certifiedit.net
certifiedit.net 06.09.2013 um 11:00:26 Uhr
Goto Top
Dann müsste man diesen eben ggf. einrichten. Sonst: Wie sollen die Daten übertragen werden? per USB?
Budders
Budders 06.09.2013 um 11:09:19 Uhr
Goto Top
Ja, erst die SQL Datei auf das Gerät, dann kann der User anfangen die Inventur durchzuführen und anschließend wird das Query vom PC aus ausgeführt.
Das war der Plan.
SlainteMhath
SlainteMhath 06.09.2013 aktualisiert um 11:13:21 Uhr
Goto Top
Moin,

Habt ihr ein Paar Tips/Ansätze wie ich da am besten ran gehe?
VB.Net? Visual C++ oder C# ?
Macht man sich darüber nicht Gedanken BEVOR man ein Gerät kauft? Naja is ja Freitag heute face-smile

30sec auf Google brachte folgends zu Tage:

- Visual Studio 2008
- Compact Framework (C#) 3.5
- C/C++
- SQL Compact for the on-device storage

Quelle


/EDIT:
Aus Erfahrung kann ich dir nur raten, den Anwender einfach nur das Objekt und den Lagerplatz scannen zu lassen. Vorblenden, oder Fehler ausgeben wenn Objekt unbekannt bzw LP bereits belegt ist für mEn nur zu Fehlern (aus Faulheit)
Budders
Budders 06.09.2013 um 11:13:28 Uhr
Goto Top
Zitat von @SlainteMhath:
Moin,
Moin.

Macht man sich darüber nicht Gedanken BEVOR man ein Gerät kauft? Naja is ja Freitag heute face-smile
.. Das Gerät wurde bereits für andere Zwecke angeschafft.
30sec auf Google brachte folgends zu Tage:

> - Visual Studio 2008
> - Compact Framework (C#) 3.5
> - C/C++
> - SQL Compact for the on-device storage
Visual Studio 2008 ist vorhanden und war auch mein erster Ansatz.

MfG
certifiedit.net
certifiedit.net 06.09.2013 um 11:14:01 Uhr
Goto Top
Wie groß ist denn die Firma? 5 Mitarbeiter? Dann könnte man das noch aus Kostengründen durchgehen lassen (vielleicht). Bei allem anderen sollte man etwas weiter denken.
Budders
Budders 06.09.2013 um 11:15:27 Uhr
Goto Top
160 Mitarbeiter ins. in dem Lager sind ca. 10 Mitarbeiter beschäftigt.
SlainteMhath
SlainteMhath 06.09.2013 um 11:16:46 Uhr
Goto Top
Nochmal mein EDIT aus dem Post oben:

Aus Erfahrung kann ich dir nur raten, den Anwender einfach nur das Objekt und den Lagerplatz scannen zu lassen. Vorblenden, oder Fehler ausgeben wenn Objekt unbekannt bzw LP bereits belegt ist für mEn nur zu Fehlern (aus Faulheit)
it-frosch
it-frosch 06.09.2013 um 11:18:08 Uhr
Goto Top
Hallo Budders,

es fehlt noch das Abfangen der Objekte, die ihr im Lager aber nicht in der DB habt. face-wink

grüße vom it-frosch
Budders
Budders 06.09.2013 aktualisiert um 11:20:00 Uhr
Goto Top
Zitat von @SlainteMhath:
Nochmal mein EDIT aus dem Post oben:

Aus Erfahrung kann ich dir nur raten, den Anwender einfach nur das Objekt und den Lagerplatz scannen zu lassen. Vorblenden, oder
Fehler ausgeben wenn Objekt unbekannt bzw LP bereits belegt ist für mEn nur zu Fehlern (aus Faulheit)

Danke für die Anregung, werde ich definitiv berücksichtigen.

Zitat von @it-frosch:
Hallo Budders,

es fehlt noch das Abfangen der Objekte, die ihr im Lager aber nicht in der DB habt. face-wink

grüße vom it-frosch

In der DB sollte eigendlich alles vorhanden sein da sie beim Wareneingang direkt eingespeist werden.
Aber zur Sicherheit kann man ja trotzdem eine Abfrage einbauen face-smile

MfG Budders
Dirmhirn
Dirmhirn 06.09.2013 um 11:20:12 Uhr
Goto Top
Hi!
Handelt es sich hier um ein einziges Gerät?
Was macht ihr denn sonst damit?
Barcode scannen oder mehr?
Könnte das Gerät WLAN?

Wenn ihr das Gerät mit einem WLAN/mobilfunk fähigem gerät ersetzen könntet. Wäre das ganze über einen Webserver zu realisieren. Mit einem Android smartphone.
Wieviel Produkte müssen pro Minute gescannt werden?

Du könntest mal nach einer fertigen Lösung suchen.
Sg Dirm
SlainteMhath
SlainteMhath 06.09.2013 um 11:23:20 Uhr
Goto Top
In der DB sollte eigendlich alles vorhanden sein da sie beim Wareneingang direkt eingespeist werden.
Ist deine erste Inventur,oder? :P
Budders
Budders 06.09.2013 aktualisiert um 11:29:17 Uhr
Goto Top
Zitat von @Dirmhirn:
Hi!
Handelt es sich hier um ein einziges Gerät?
Wir besitzen insg. 5 Geräte, 3 davon sind für die Lagerverwaltung vorgesehen.
Was macht ihr denn sonst damit?
Barcode scannen oder mehr?
Sonst werden damit Objekte für Kundenwechsel erfasst, also ja, Barcodes scannen und in die entsprechenden Informationen in die AS/400 einspeisen (AS/400 und MySQL Datenbank stehen an verschiedenen Standorten und sind nicht verknüpft.
Könnte das Gerät WLAN?
Ist in den Einstellungen vorhanden aber es wird "NO CARD" angezeigt, ob damit jetzt eine SIM oder eine Wlan Karte gemeint ist, ist mir schleierhaft
Wenn ihr das Gerät mit einem WLAN/mobilfunk fähigem gerät ersetzen könntet. Wäre das ganze über
einen Webserver zu realisieren. Mit einem Android smartphone.
Das wäre definitiv eine Option
Wieviel Produkte müssen pro Minute gescannt werden?
Ich denke das ist nicht wirklich Relevant da sie die Objekte eigendlich anschließend direkt ins Lager einsortiert werden sollen.
Vermutlich wirds nicht über 10 Objekte/Min kommen
Du könntest mal nach einer fertigen Lösung suchen.
Gesucht habe ich, gefunden nichts was wirklich passt.
Sg Dirm
MfG Budders face-smile
.
Budders
Budders 06.09.2013 um 11:25:44 Uhr
Goto Top
Zitat von @SlainteMhath:
> In der DB sollte eigendlich alles vorhanden sein da sie beim Wareneingang direkt eingespeist werden.
Ist deine erste Inventur,oder? :P

... jap :D
Dirmhirn
Dirmhirn 06.09.2013 aktualisiert um 11:50:48 Uhr
Goto Top
Bei 3 parallelen Geräten und bis zu 10 Artikel pro min (das könnte mit einem Android gerät schon knapp werden)
Und einer offline DB, musst du dir auch Gedanken machen wie du die daten dann synchronisierst. Anzunehmen, dass eh nie ein Artikel zweimal geändert wird, ist gefährlich.
Schraub das Ding mal auf, oder frag beim Hersteller wegen WLAN Karte.
Hast du schon programmier erfahrung in den Sprachen?

Nochwas: könnt ihr die Daten nicht aus dem AS/400 System synchronisieren? Oder sind da nicht alle Daten vorhanden?
Sg Dirm
Budders
Budders 06.09.2013 aktualisiert um 11:56:46 Uhr
Goto Top
Zitat von @Dirmhirn:
Bei 3 parallelen Geräten und bis zu 10 Artikel pro min (das könnte mit einem Android gerät schon knapp werden)
Und einer offline DB, musst du dir auch Gedanken machen wie du die daten dann synchronisierst. Anzunehmen, dass eh nie ein Artikel
zweimal geändert wird, ist gefährlich.
Schraub das Ding mal auf, oder frag beim Hersteller wegen WLAN Karte.
Hast du schon programmier erfahrung in den Sprachen?

Nochwas: könnt ihr die Daten nicht aus dem AS/400 System synchronisieren? Oder sind da nicht alle Daten vorhanden?
Sg Dirm

Die MySQL Datenbank ist nicht mit der AS/400 verbunden. Und dort sind wie von dir schon vermutet nicht alle Daten vorhanden.

Auf der AS/400 werden Zeitschriften und Zeitungen verwaltet, die MySQL DB ist für Bücher zuständig, 2 verschiedene Standorte.
Also leider nicht über die AS/400 realisierbar :/

Ich habe sehr Grundlegende kenntnisse in VB.Net.

MfG
Budders
Budders 06.09.2013 aktualisiert um 12:09:00 Uhr
Goto Top
Btw: Ich hätte zwar eine SEHR notdürftige Alternative welche den Zweck zwar erfüllt, jedoch hat es keine Absicherung jeglicher hinsicht und kein User Feedback
Theorie:
Auf dem Gerät wird ein notepad gestartet und die Artikel und Lagerplatz abwechselnd gescannt, somit stünden jeweils ISBN und Lagerplatz ID immer untereinander.
Diese txt Datei (im Code list.txt genannt) könnte man dann erst auf den PC übertragen und anschließend mit dem folgendem Batch verarbeiten, welcher eine SQL datei erstellt welche per Query eingespielt werden könnte.
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ list.txt') do @(  
	for /L %%a in (1,2,99) do @if %%i==%%a @echo %%j && set ISBN=%%j && echo %ISBN%>>ISBN%%a.txt
        for /L %%a in (2,2,99) do @if %%i==%%a @echo %%j && set lager=%%j && echo %lager%>>lager%%a.txt
	call :blub
)
goto end

:blub
echo UPDATE Lager SET LAGER=%Lager% WHERE OBJNR=%ISBN%;>>Lagerplatz.txt
exit /b

:end
for /f "tokens=1,* delims=:" %%o in ('findstr /n $ Lagerplatz.txt') do @(  
	for /L %%b in (2,2,99) do @if %%o==%%b echo %%p>>Lagerplatz_Query.SQL
)

for /L %%k IN (1,1,999) DO (
if exist ISBN%%k.txt del ISBN%%k.txt
if exist lager%%k.txt del lager%%k.txt
)
if exist Lagerplatz.txt del Lagerplatz.txt

(bei dem Batch drehen sich bestimmt bei manchen die Zehennägel hoch aber ich meine was solls, sie tut ihren Zweck.)
Dirmhirn
Dirmhirn 09.09.2013 um 13:19:16 Uhr
Goto Top
Hi!

wenn ihr nicht seeehr seeehr disziplinierte Mitarbeiter habt, wird das ziemlich schnell aus dem Ruder laufen...
was ist wenn ein MA einen Barcode falsch scannt, doppelt, fehlscann...
oder er einmal das falsche Regal erwischt, dann fällts ihm ein und er legt's um. anschließend legt ein anderer das richtige Buch in das Regal. je nachdem wie du die Dateien einscannst, hast du verschiedene Ergebnisse.
mit Zeitstempel, könntest du Fehler zmdest teilweise erkennen.

als Notlösung könntest du vll Timestamp - ISBN - Lagerplatz ID protokollieren.
dann alle Dateien zusammenführen und dann nach der Reihe abarbeiten.
Und hier aber gleich direkt in die MySQL-DB (per PHP o.ä.) mit einer Batch und 10 Dateien hast du nur wieder 20 neue Fehlerquellen.
außerdem kannst du so direkt einige Fehler protokollieren.

so kannst du auch erkennen ob du eine Dateie zum zweiten mal einließt oder sie nur zum Teil vom Gerät gelöscht wurde...

um den Programmieraufwand am Gerät zu verringern, könntet ihr euch ein kleine Programm machen, das diese Liste erstellt und dem Benutzer die Möglichkeit gibt Einträge wieder zu löschen oder zb einen Buchscann verwirft, wenn nicht 15 Sekunden später ein Lagerplatz kommt oder zwei mal hintereinander ein Buch.
außerdem die Datei regelmäßig sichert - sonst ist mal der Saft aus und die Arbeit ist weg. (oder kann Notepad laufend backups erstellen?)
wahrscheinlich habt ihr schon ein Problem wenn 10 Minuten weg sind.

sg Dirm
Budders
Budders 09.09.2013 um 14:52:52 Uhr
Goto Top
Moin Moin,
Wie schon gesagt, sehr notdürftige Lösung.
Ich habe mich jetzt entschlossen das ganze per Android APK zu regeln, habe jemanden gefunden, der auf dem Gebiet relativ erfahren ist und bereit ist mir zu helfen.

werde mich melden sobald ich fertig bin :p

MfG Budders/Gerrit face-smile
Dirmhirn
Dirmhirn 09.09.2013 um 15:03:13 Uhr
Goto Top
wenn du da eine kleine Android App hast o.ä., würd mich auch interessieren. wir haben zwar nur ein kleines Prototypenlager mit Excelliste. Hab auch schon immer wieder wegen QR-Codes o.ä. und Android überglegt, hatte aber noch keine Zeit dafür.
sg Dirm
Budders
Budders 09.09.2013 um 15:14:14 Uhr
Goto Top
Werde ich ;)

MfG
Budders
Budders 01.10.2013 um 14:44:27 Uhr
Goto Top
Servus, ich mal wieder!

habe heute mal den Batch komplett überarbeitet.
Die Scanner erzeugen eine list.txt in der Lager und ISBN untereinander geschrieben werden.
(Mein Ausbildungsleiter hat gesagt, dass die User dann dafür verantwortlich sind, also nur ein paar Überprüfungen, kein direkter Zugang zur Datenbank)
die Text Datei wird anschließend mittels einer vorhandenen Schnittstelle in die Datenbank importiert.
if NOT exist list.txt goto nolist
if exist Lagerplatz.txt goto existinglist
if exist errorlog.txt goto existingerrorlog
set d=%date:~0,2%.%date:~-7,2%.%date:~-4,4%
set d=%d: =_%
set t=%time:~0,2%.%time:~3,2%
set t=%t: =0%
set dt=_%d%_%t%
@echo off
set ctrl=0
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ list.txt') do @(  
	for /L %%a in (1,2,99) do if %%i==%%a echo %%j && set satz=%%a && set ISBN=%%j && echo %ISBN%>>ISBN%%a.txt
        for /L %%a in (2,2,99) do @if %%i==%%a echo %%j && set satz=%%a && set lager=%%j && echo %lager%>>lager%%a.txt
	rem for /L %%a in (3,2,99) do if %%i==%%a echo %%j && set bstd=%%j && echo %bstd%>>bstd%%a.txt

	call :blub
)
goto end



:wrongisbn
	set /a line=%satz%/2
	set /a errmi=%line%-1
	set /a errma=%line%+1
	echo Fehlerhafte ISBN in Zeile %satz% %isbn% -- wurde zwischen Zeile %errmi% und %errma% geschrieben. >>errorlog.txt
	exit /b

:wronglager
	set /a line=%satz%/2
	set /a errmi=%line%-1
	set /a errma=%line%+1
	echo Fehlerhafter Lagerplatz in Zeile %satz% %lager% -- wurde zwischen Zeile %errmi% und %errma% geschrieben.>>errorlog.txt
	exit /b

:nolist
	@echo off
	cls
	color 0c
	cd > owndirectory 
	set /p owndirectory= <owndirectory
	del owndirectory
	echo Es besteht keine Liste zur Verarbeitung! Stellen sie sicher, dass die list.txt, welche vom Scanner erzeugt wird sich im selben Verzeichnis befindet. 
	echo.
	echo Bitte stellen sie die list.txt in %owndirectory% zur Verfuegung.
	pause
	exit

:existinglist
	@echo off
	cls
	color 0e
	echo Es besteht bereits eine Lagerlist! Pruefen sie ob diese bereits uebertragen wurde!
	echo.
	echo Sollte sie schon im System vorhanden sein, loeschen sie die Datei Lagerliste.txt und starten sie den Vorgang neu
	pause
	exit

:existingerrorlog
	@echo off
	cls	
	color 0e
	echo Es besteht bereits eine Errorliste! Pruefen sie ob die Eintragungen in der Datenbank korrigiert wurden!
	echo.
	echo Sollten die Eintragungen korrigiert sein, loeschen sie die Datei errorlog.txt und starten sie den Vorgang neu
	pause
	exit




:blub
	set Lager=%Lager:~0,-1%
	set ISBN=%ISBN:~0,-1%
	set NUll0=0
	if not %satz%==1 if %ISBN:~0,1% GTR 9 call :wrongisbn
	if not %satz%==1 if %lager:~0,1% LEQ 9 call :wronglager
	rem echo %Lager%;%ISBN%;%bstd% >>Lagerplatz.txt
	echo %Lager%;%ISBN%;%Null0% >>Lagerplatz.txt
	exit /b

:end
	for /f "tokens=1,* delims=:" %%o in ('findstr /n $ Lagerplatz.txt') do @(  
		for /L %%b in (2,2,99) do if %%o==%%b echo %%p>>Lagerplatz_a.txt
	)

	for /f "tokens=1,* delims=:" %%o in ('findstr /n $ errorlog.txt') do @(  
		for /L %%b in (1,2,99) do if %%o==%%b echo %%p>>errorlog_a.txt
	)


	for /L %%k IN (1,1,20) DO (
		if exist ISBN%%k.txt del ISBN%%k.txt
		if exist lager%%k.txt del lager%%k.txt
		if exist bstd%%k.txt del bstd%%k.txt
	)
:weiter
	if exist Lagerplatz.txt ( 
		del Lagerplatz.txt
	)
	@echo off

	

	if exist Lagerplatz_a.txt (
		if NOT exist Lagerplatz.txt (
			rename Lagerplatz_a.txt Lagerplatz.txt
		)
	)
	
	
	if exist errorlog.txt (
		del errorlog.txt 
	)
	
	if NOT exist errorlog.txt ( 
		if exist errorlog_a.txt ( 
			rename errorlog_a.txt errorlog.txt
		)
	)
	
	if NOT exist Lagerplatz.txt (
		cls 
		color 0c 
		echo Ein FEHLER ist aufgetreten! 
		echo. 
		echo Datei Lagerplatz wurde nicht erstellt 
		echo Bitte kontaktieren sie einen Administrator!
		color 07

		pause>nul
		exit
	)
	
	if exist Lagerplatz.txt if exist errorlog.txt (
		cls
		color 02
		echo Verarbeitung erfolgreich 
		echo.
		echo Mindestens 1 Datensatz war fehlerhaft 
		echo.
		echo Duecken sie eine beliebige Taste um den Vorgang fertigzzstellen und die Fehler anzuzeigen.  Bitte ueberpruefen sie die Fehler. 
		pause>nul
		start notepad.exe errorlog.txt 
		cls
		set skipif=1 
		color 07
	)

	if not "%skipif%"=="1"if exist Lagerplatz.txt (  
		cls 
		color 02 
		echo Verarbeitung erfolgreich 
		echo. 
		pause 
		cls
		color 07
	)
	
	G:
	cd \Budders\
	rename list.txt list%dt%.txt
	move list%dt%.txt G:\Budders\lists
exit 

MfG Budders, Verbesserungsvorschläge erwünscht face-smile