Umstellung Warenwirtschaft
Moderator: Moderatoren
Umstellung Warenwirtschaft
Hallo zusammen,
ich lese schon eine ganze Weile hier mit, und bin von diesem Forum sehr begeister. Jetzt habe auch ich meine erste Frage.
Ich versuche gerade unsere alte Warenwirschaft von Clipper zu xbase++ zu migrieren.
Unter Clipper lief das Programm auf DOS Rechnern in einer Novellumgebung.
Ziel der Umstellung ist das Programm in einer Windowsumgebung mit SQL-Datenbanken laufen zu lassen. Ich bin jetzt soweit das das Programm auf einem Windowsrechner in einer
Novellumgebung läuft. Jetzt versuche ich gerade eine kleine .prg so zu ändern, das sie auf eine SQL Datenbank zugreift. Darüber finde ich aber leider nichts in der Hilfe noch im Forum.
Hat einer von euch eine Idee, wie ich das ganze angehen muß. Bis jetzt sind es alles .dbf und .dbt Dateien incl. .ntx Index.
Ich müsste mich jetzt erst mal an der SQL-Datenbank anmelden und die Daten auslesen.
Bin für jede Hilfe dankbar.
Gruß
daywalker
ich lese schon eine ganze Weile hier mit, und bin von diesem Forum sehr begeister. Jetzt habe auch ich meine erste Frage.
Ich versuche gerade unsere alte Warenwirschaft von Clipper zu xbase++ zu migrieren.
Unter Clipper lief das Programm auf DOS Rechnern in einer Novellumgebung.
Ziel der Umstellung ist das Programm in einer Windowsumgebung mit SQL-Datenbanken laufen zu lassen. Ich bin jetzt soweit das das Programm auf einem Windowsrechner in einer
Novellumgebung läuft. Jetzt versuche ich gerade eine kleine .prg so zu ändern, das sie auf eine SQL Datenbank zugreift. Darüber finde ich aber leider nichts in der Hilfe noch im Forum.
Hat einer von euch eine Idee, wie ich das ganze angehen muß. Bis jetzt sind es alles .dbf und .dbt Dateien incl. .ntx Index.
Ich müsste mich jetzt erst mal an der SQL-Datenbank anmelden und die Daten auslesen.
Bin für jede Hilfe dankbar.
Gruß
daywalker
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 115 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Umstellung Warenwirtschaft
Moin,
herzlich Willkommen hier und viel Erfolg bei Deiner Umstellung!
Schau Dir mal sqlexpress an - von Boris Borzic.
Viele Grüße,
Martin
herzlich Willkommen hier und viel Erfolg bei Deiner Umstellung!
Schau Dir mal sqlexpress an - von Boris Borzic.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Umstellung Warenwirtschaft
Auch von mir ein herzliches Willkommen!
"Zugriff" auf SQL-Daten/einen SQL-Server geht im Prinzip auch über die ODBCDBE von Alaska.
Was genau willst Du tun? Sollen die DBF-Tabellen in einen SQL-Server (welchen?) importiert werden oder musst Du auf Fremddaten zugreifen oder willst Du "nur" im Programm "SQL sprechen"? Letzteres geht auch mit DBFs und z.B. der ADS.
"Zugriff" auf SQL-Daten/einen SQL-Server geht im Prinzip auch über die ODBCDBE von Alaska.
Was genau willst Du tun? Sollen die DBF-Tabellen in einen SQL-Server (welchen?) importiert werden oder musst Du auf Fremddaten zugreifen oder willst Du "nur" im Programm "SQL sprechen"? Letzteres geht auch mit DBFs und z.B. der ADS.
Herzlich,
Tom
Tom
Re: Umstellung Warenwirtschaft
Hallo,
vielen Dank für die nette Begrüßung. Ich möchte gerne unsere dbf Dateien auf einen MSSQL Server migrieren und dadurch auch anderen Programmen zur Verfügung stellen.
SQLEpress werde ich mir mal ansehen.
Vielen Dank für eure Hilfe.
Gruß
Frank
vielen Dank für die nette Begrüßung. Ich möchte gerne unsere dbf Dateien auf einen MSSQL Server migrieren und dadurch auch anderen Programmen zur Verfügung stellen.
SQLEpress werde ich mir mal ansehen.
Vielen Dank für eure Hilfe.
Gruß
Frank
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Umstellung Warenwirtschaft
Hallo, Frank.
Wenn alles gut und nach Plan läuft <hüstel>, stellt Alaska Software zum Jahresende das "Artica"-Projekt zur Verfügung. Im Rahmen dessen sollen Xbase++-Anwendungen nahezu aufwandsfrei mit dem PostGre-Server (und nur mit diesem!) kommunizieren und SQL-Datenbanken verwalten können:
http://www.alaska-software.com/arctica
Auf PostGre können auch andere Anwendungen zugreifen, der Server kostet nichts, ist robust, schnell und sehr leistungsstark.
Wenn alles gut und nach Plan läuft <hüstel>, stellt Alaska Software zum Jahresende das "Artica"-Projekt zur Verfügung. Im Rahmen dessen sollen Xbase++-Anwendungen nahezu aufwandsfrei mit dem PostGre-Server (und nur mit diesem!) kommunizieren und SQL-Datenbanken verwalten können:
http://www.alaska-software.com/arctica
Auf PostGre können auch andere Anwendungen zugreifen, der Server kostet nichts, ist robust, schnell und sehr leistungsstark.
Herzlich,
Tom
Tom
Re: Umstellung Warenwirtschaft
Hallo Tom,
da bin ich ja mal gespannt. Hört sich ja nicht schlecht an. Vielen Dank für eure Antworten.
Gruß
Frank
da bin ich ja mal gespannt. Hört sich ja nicht schlecht an. Vielen Dank für eure Antworten.
Gruß
Frank
Re: Umstellung Warenwirtschaft
Hallo Tom,
vielleicht kannst Du mir auch in einem anderen Problem helfen.
Ich benutze in meinem alten Clipper Code die Funktion keysec()
keysec(K_ESC,120,1,.T.)
KUNDEN->notiz := memoedit(KUNDEN->notiz,12,2,21,77,aendern)
keysec()
dbcommit()
dbunlock()
Das Memo-Feld wird nach 120 Sekunden geschlossen wenn keine Eingabe mehr erfolgt. Diese Funktion wird leider nicht mehr unterstützt.
Wie kann ich diese Funktion mit xbase++ abbielden? Habe verschiedenes versucht, aber leider keine Lösung gefunden.
Danke
Frank
vielleicht kannst Du mir auch in einem anderen Problem helfen.
Ich benutze in meinem alten Clipper Code die Funktion keysec()
keysec(K_ESC,120,1,.T.)
KUNDEN->notiz := memoedit(KUNDEN->notiz,12,2,21,77,aendern)
keysec()
dbcommit()
dbunlock()
Das Memo-Feld wird nach 120 Sekunden geschlossen wenn keine Eingabe mehr erfolgt. Diese Funktion wird leider nicht mehr unterstützt.
Wie kann ich diese Funktion mit xbase++ abbielden? Habe verschiedenes versucht, aber leider keine Lösung gefunden.
Danke
Frank
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1931
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Umstellung Warenwirtschaft
Hallo Frank,
ich weiß jetzt nicht was du genau machen möchtest. Denn wenn du ein GUI-Fenster mit XbpDialog() erstellst, bleibt das Fenster
solange offen, bis der anwender das Fenster schließt. Sei es über einen Button, der mit dem Close belegt ist bei activate
oder über das Kreuz.
ich weiß jetzt nicht was du genau machen möchtest. Denn wenn du ein GUI-Fenster mit XbpDialog() erstellst, bleibt das Fenster
solange offen, bis der anwender das Fenster schließt. Sei es über einen Button, der mit dem Close belegt ist bei activate
oder über das Kreuz.
Re: Umstellung Warenwirtschaft
Hallo Rolf,
das Programm befindet sich im reinen Textmodus. Es geht darum das das Memofenster wieder automatisch nach 2 min. geschlossen und der Datensatzt freigegeben wird, wenn der Benutzer nichts macht.
Gruß
Frank
das Programm befindet sich im reinen Textmodus. Es geht darum das das Memofenster wieder automatisch nach 2 min. geschlossen und der Datensatzt freigegeben wird, wenn der Benutzer nichts macht.
Gruß
Frank
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Umstellung Warenwirtschaft
Ich könnte mir vorstellen, beim Öffnen des Memofeldes automatisch einen neuen Thread zu öffnen, der die Zeit der Inaktivität mitzählt und bei einem voreingestellten Wert das Feld wieder schließt. Der Thread selber ist nicht das Problem, nur die Interaktion wegen der Inaktivität ist etwas aufwändiger.
Grundsätzlich frage ich mich aber nach dem Sinn der Aktion. Denke bitte daran, daß unter Windows mit GUI alles "ein wenig" anders läuft als mit Clipper unter DOS. Manche lieb gewonnenen Angewohnheiten muß man einfach über Bord werfen.
Jan
OK, Du warst mit Deiner Antwort an Rolf schneller. Da gilt der Einwand der GUI natürlich nicht mehr.
Grundsätzlich frage ich mich aber nach dem Sinn der Aktion. Denke bitte daran, daß unter Windows mit GUI alles "ein wenig" anders läuft als mit Clipper unter DOS. Manche lieb gewonnenen Angewohnheiten muß man einfach über Bord werfen.
Jan
OK, Du warst mit Deiner Antwort an Rolf schneller. Da gilt der Einwand der GUI natürlich nicht mehr.
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15706
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Umstellung Warenwirtschaft
Hi,
wenn du im Textmodus (memoedit ?) bist, kannst du mit SetTimerEvent()
eine Funktion in bestimmten Zeitabständen starten, diese Funktion könnte dann ein KeyBoard chr(27) senden und den SetTimerEvent() abschalten.
Wenn du nicht in memoedit sondern in einem Get stehst, wäre es eleganter einen eigenen Reader oder ReadKill() zu nutzen.
wenn du im Textmodus (memoedit ?) bist, kannst du mit SetTimerEvent()
eine Funktion in bestimmten Zeitabständen starten, diese Funktion könnte dann ein KeyBoard chr(27) senden und den SetTimerEvent() abschalten.
Wenn du nicht in memoedit sondern in einem Get stehst, wäre es eleganter einen eigenen Reader oder ReadKill() zu nutzen.
Gruß
Hubert
Hubert
Re: Umstellung Warenwirtschaft
Hallo,
im Moment sieht meine Procedure so aus :
Es passiert folgendes:
das Memofenster geht auf und ich kann Text eingeben. Wenn ich 10 Sek. nichts mache geht es wieder zu. Drücke ich ESC geht es auch wieder zu. Das Problem ist noch, das es auch zu geht wenn ich STRG drücke und durch den neuen Thread wird das Programm sehr langsam.
Die Funktion SetTimeEvent() versuche ich mal umzusetzen.
Frank
BRANDELH ich habe mal die CODE-Tags gesetzt, damit ich besser lesen kann
im Moment sieht meine Procedure so aus :
Code: Alles auswählen
// Datei: ku_memo.prg
#include "inkey.ch"
#include "box.ch"
#include "std.ch"
#include "memoedit.ch"
procedure ku_notiz(aendern)
LOCAL oThr
public nkey1 := 0
public mkey1 := 0
privat ergebnis
privat s_screen := savescreen(11,0,24,79)
privat n_farbe := standard
oThr := Thread():new()
oThr :start ("Edit")
@ 11,1 clear to 22,78
@ 23, 0 clear to 24, 79 // Menzeile und Hilfezeile
@ 24, 5 say "'Strg - W' zum Speichern 'ESC' zum Abbrechen"
dispbox(11,1,22,78,B_DOUBLE)
set color to /W
@ 11,23 say "> <"
@ 11,24 say " BEMERKUNGEN ZUM KUNDEN " color signal
set color to &standard
if iscolor()
set color to S/BG,S/BG
endif
if aendern
if netrlock(15)
KUNDEN->notiz := memoedit(KUNDEN->notiz,12,2,21,77,aendern)
dbcommit()
dbunlock()
mkey1 := 1
else
alert(hilfe_zeile(1205))
endif
else
memoedit(KUNDEN->notiz,12,2,21,77,aendern)
endif
standard := n_farbe
set color to &standard
@ 11,1 clear to 22,78
restscreen(11,0,24,79,s_screen)
return
Procedure Edit()
// LOCAL nkey1 :=0
// LOCAL mkey1 :=0
DO WHILE mkey1 = 0
nkey1 := inkey(10)
if nkey1 = 0
PostappEvent (K_ESC, , , SetAppWindow())
mkey1 := 1
endif
ENDDO
RETURN
das Memofenster geht auf und ich kann Text eingeben. Wenn ich 10 Sek. nichts mache geht es wieder zu. Drücke ich ESC geht es auch wieder zu. Das Problem ist noch, das es auch zu geht wenn ich STRG drücke und durch den neuen Thread wird das Programm sehr langsam.
Die Funktion SetTimeEvent() versuche ich mal umzusetzen.
Frank
BRANDELH ich habe mal die CODE-Tags gesetzt, damit ich besser lesen kann
- brandelh
- Foren-Moderator
- Beiträge: 15706
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Umstellung Warenwirtschaft
Hi,
im Prinzip hast du schon alles was du brauchst, SetTimerEvent() geht wohl nicht wenn du mehrere Threads nutzt,
bin mir aber nicht sicher. Aber du hast ja in der Edit-Methode das schon umgesetzt.
Drei Sachen fielen mir auf ...
1. Code bitte immer mit den code-tags markieren:
der kleine [ CODE ] Schalter oben am Anfang und Ende gedrückt macht den Code leichter lesbar
2. Man sollte nicht direkt ins Feld schreiben:
wenn du eine (besser 2) Zwischenvariable nutzt, kannst du vor dem Speichern abfragen ob überhaupt was geändert wurde.
Wenn nicht, dann sparst du einen Schreibzugriff und dbcommit(). In deinem Beispiel dürfte auch ein ESC speichern ...
3. Du nutzt postappevent() ...
K_ESC ist kein Event und PostAppEvent() eigentlich nur für die GUI Oberfläche.
-> müsste es nicht KEYBOARD K_ESC heißen ?
Wäre es ein GUI Programm ist SetAppWindow() eventuell nicht das Fenster / Control das du ansprechen möchtest
und der Event wäre xbeP_Keyboard mit der ESC Taste als 1. Parameter xbeK_ESC und die Include-Datei
appevent.ch statt inkey.ch.
im Prinzip hast du schon alles was du brauchst, SetTimerEvent() geht wohl nicht wenn du mehrere Threads nutzt,
bin mir aber nicht sicher. Aber du hast ja in der Edit-Methode das schon umgesetzt.
Drei Sachen fielen mir auf ...
1. Code bitte immer mit den code-tags markieren:
der kleine [ CODE ] Schalter oben am Anfang und Ende gedrückt macht den Code leichter lesbar
2. Man sollte nicht direkt ins Feld schreiben:
Code: Alles auswählen
KUNDEN->notiz := memoedit(KUNDEN->notiz,12,2,21,77,aendern)
Wenn nicht, dann sparst du einen Schreibzugriff und dbcommit(). In deinem Beispiel dürfte auch ein ESC speichern ...
3. Du nutzt postappevent() ...
Code: Alles auswählen
PostappEvent (K_ESC, , , SetAppWindow())
-> müsste es nicht KEYBOARD K_ESC heißen ?
Wäre es ein GUI Programm ist SetAppWindow() eventuell nicht das Fenster / Control das du ansprechen möchtest
und der Event wäre xbeP_Keyboard mit der ESC Taste als 1. Parameter xbeK_ESC und die Include-Datei
appevent.ch statt inkey.ch.
Gruß
Hubert
Hubert
Re: Umstellung Warenwirtschaft
Hallo,
ich habe jetzt PostappEvent durch KEYBOARD Chr(K_ESC) ersetzt. Funktioniert. Memoedit wird ja mit STRG+W beendet und die Änderungen gespeichert.
Wenn ich nur schon STRG drücke schließt er mir mein memoedit Fenster. Waran kann das liegen?
Danke für eure Hilfe
Frank
ich habe jetzt PostappEvent durch KEYBOARD Chr(K_ESC) ersetzt. Funktioniert. Memoedit wird ja mit STRG+W beendet und die Änderungen gespeichert.
Wenn ich nur schon STRG drücke schließt er mir mein memoedit Fenster. Waran kann das liegen?
Danke für eure Hilfe
Frank
Re: Umstellung Warenwirtschaft
Hallo,
habe jetzt noch folgendes geändert:
Damit fange ich dann das STRG+W ab und leite es auf die F10 Taste um. Jetzt muß man halt zum speicher die F10 Taste drücken.
Jetzt muß ich nur nochmal wegen der Geschwindigkeit schauen.
Frank
habe jetzt noch folgendes geändert:
Code: Alles auswählen
.
.
.
KUNDEN->notiz := memoedit(KUNDEN->notiz,12,2,21,77,aendern,"ende")
dbcommit()
dbunlock()
mkey1 := 1
else
alert(hilfe_zeile(1205))
endif
else
memoedit(KUNDEN->notiz,12,2,21,77,aendern,"ende")
endif
.
.
.
Function ende()
local nkey2 := Lastkey()
local nreturn :=ME_DEFAULT
if nkey2 = K_F10
nreturn := K_CTRL_W
endif
return nreturn
Jetzt muß ich nur nochmal wegen der Geschwindigkeit schauen.
Frank
- brandelh
- Foren-Moderator
- Beiträge: 15706
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Umstellung Warenwirtschaft
Hi,
es ist lange her, aber ich glaube STRG wird von inkey auch als Zeichen erkannt, aber als Sonderzeichen ... somit könnte das einen Key1=0 auslösen. Besser wäre es wenn du nicht auf "keine Taste gedrückt" abfragst, sondern auf Zeit ist abgelaufen ...
wobei ich mich jetzt frage, ob das INKEY(1) hier nicht den Tastendruck des Memoedit raubt ?
Wenn ja, sollte man lastkey() oder nextkey() nutzen ...
es ist lange her, aber ich glaube STRG wird von inkey auch als Zeichen erkannt, aber als Sonderzeichen ... somit könnte das einen Key1=0 auslösen. Besser wäre es wenn du nicht auf "keine Taste gedrückt" abfragst, sondern auf Zeit ist abgelaufen ...
Code: Alles auswählen
local nEndeTime := seconds()+10
do while .t.
nKey := inkey(1)
if nKey # 0
...
exit // Key ausführen
endif
if nEndeTime < seconds()
keyboard K_ESC
esc
endif
enddo
Wenn ja, sollte man lastkey() oder nextkey() nutzen ...
Gruß
Hubert
Hubert
Re: Umstellung Warenwirtschaft
Danke für die Hilfe,
ich lasse es jetzt erstmal so laufen, da ich ein anderes größeres Problem habe.
Ich habe ja schon im Forum gefunden, wie man den angemeldeten User in einer Windows Umgebung auslesen kann.
Kann man das auch mit den Gruppen machen? Meine Anwendung verteilt Rechte anhand der Gruppenzugehörigkeit.
Gruß
Frank
ich lasse es jetzt erstmal so laufen, da ich ein anderes größeres Problem habe.
Ich habe ja schon im Forum gefunden, wie man den angemeldeten User in einer Windows Umgebung auslesen kann.
Kann man das auch mit den Gruppen machen? Meine Anwendung verteilt Rechte anhand der Gruppenzugehörigkeit.
Gruß
Frank
- AUGE_OHR
- Marvin
- Beiträge: 12913
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Umstellung Warenwirtschaft
meinst du sowasdywalker hat geschrieben:Ich habe ja schon im Forum gefunden, wie man den angemeldeten User in einer Windows Umgebung auslesen kann.
Kann man das auch mit den Gruppen machen? Meine Anwendung verteilt Rechte anhand der Gruppenzugehörigkeit.
wenn ja könnte man es WMI machen.DNSDomain : NIL
DNSDomainSuffixSearchOrder : NIL
DNSEnabledForWINSResolution : N
DNSHostName : E500
DNSServerSearchOrder : {217.237.150.205, 217.237.149.142}
DomainDNSRegistrationEnabled : N
gruss by OHR
Jimmy
Jimmy