| |
|
|
Ulrich Bednarz | Hallo, Soory, ich muß mich erst einmal hier zurechtfinden! In meiner Vorstellung habe ich bereits über einige meine Schwierigkeiten in Sachen DB-Programmierung mit Profan berichtet. Thomas war so nett und hat bereits auf einen Teil geantwortet (Danke!). Hier ist der Quellode mit meinen Anmerkungen (die erste Frage - Index mit Pfadangabe - und der Schleifenteil sind bereits erledigt)! Vielleicht hat der ein oder andere eine Idee was ich besser machen kann! |
|
|
| |
|
|
|
ByteAttack | Mal so auf die schnelle: Ich würde an deiner Stelle alle absoluten Pfad generell rausnehmen. g:XProfanUmsatzUmsatz.dbf und die durch $ProgDir+Umsatz.dbf ersetzen. |
|
|
| |
|
|
|
Thomas Freier | In dieser Woche ist sicher bei vielen die Zeit knapp. Das Ziel deiner Anwendung ist schwach zu erkennen. Ich vermute es sollen die verkauften Artikel, Umsatz und Gewinn leicht erkennbar sein. An dieser Stelle würde ich bei XProfan 8 Franks Listview einsetzen. Zwei Tabs: 1. mit eigenen Daten und 2. mit Lieferanten und Artikeln. Da lassen sich die Daten, ergänzt mit Verkaufsort und Datum, locker von einer Tabelle in die Andere kopieren. Als Anregung ein Bild beigelegt. Die Lieferanten.dbf würde ich sicher auftrennen in Lieferanten.dbf (L-Nummer, Adresse, (Umsatz?)) und Artikel.dbf (L-Nummer und Artikeldaten). |
|
|
| |
|
|
|
Thomas Freier | hier noch etwas zu den anderen Problemen: Bei dieser Konstruktion: KompilierenMarkierenSeparieren zeigst du nach jedem verlassen des WaitInput den alten Datensatz an. Änderungen werden weggebügelt. Also GetUSatz entfernen und erstmals vor WhileNot E% einsetzen. Neue Satzdaten anzeigen : KompilierenMarkierenSeparieren GetUSatz hattest du ja schon drin, macht aber nur Sinn, wenn der Satzzeiger sich verändert hat. Das das Datumsfeld kein D-Feld in der Datenbank ist hat wohl seine Gründe. Wohl auch das suchen nach Firma , da hier sonst der Begriff Verkaufsstelle verwendet wird. Ergebnisfelder ( z.B. : Umsatz, Gewinn) als Edit-Felder ? Änderungen ohne Button speichern? Und dann mit %Key(13) ??? Schwer nachvollziehbar auch Daten speichern und einlesen. Weniger Felder werden gespeichert als ausgelesen? Nun gut, erst einmal bis hier. Unter XProfan 8.0 gibt es sonst auch: @Create(DateEdit,N,S,X1,Y1,X2,Y2) für Datumseingaben und hier unter Includes Hilfe (z.B.: date.inc) für die Ermittlung der KW zum Datum. |
|
|
| |
|
|
|
Thomas Freier | Setze hier noch einmal den 1. Teil geändert ein, da stümperhaft und mit Fehlern. KompilierenMarkierenSeparieren Habe ich mit Profan 6.6 getestet und und kein Problem beim Compilieren. WhileLoop geändert, da noch nicht in Profan 6.6 vorhanden. |
|
|
| |
|
|
|
Ulrich Bednarz | Hallo Thomas, die Ungereimtheiten, auf die Du gestoßen bist, liegen daran, daß ich an dem Prog noch herumfeile. Da aber einige Basics bei mir nicht funktionierten, habe ich um Hilfe gebeten. Vielen Dank für Deine Mühe! Deine Vorschläge habe ich ausprobiert. Sie funktionieren (was auch zu erwarten war). Noch Unterstützung benötige ich in dem Fall, wo ich im SubProg ein Fenster mit einem bestimmten Handle öffne, aber beim Schließen das gesamte Prog beendet wird, was eigentlich so nicht gedacht war. Dennoch recht herzlichen Dank für Deine Hilfe! Ein besinnliches Weihnachtsfest und ein erfolgreiches Neues Jahr 2008 wünscht Dir UlrichB |
|
|
| |
|
|
|
Thomas Freier | Hallo Ulrich, ohne Code ist da kaum ein Tip zu geben. Hier ein Beispiel und eventuell findest du die Lösung für dein Problem. KompilierenMarkierenSeparierencls
declare a%,b%,d1%,d2%,d3%,dlg%, End1%,End2%
usefont ms sans serif,15,7,0,0,0
setdialogfont 1
print Unterschiedliche Reaktionen beim Klick ins Fenster-Kreuz
print zum Schließen eines Dialog-Fensters.
let a%=createbutton(%hwnd,Ende,50,150,50,20)
let d1%=createbutton(%hwnd,Dialog 1,150,150,50,20)
let d2%=createbutton(%hwnd,Dialog 2,250,150,50,20)
let d3%=createbutton(%hwnd,Dialog 3,350,150,50,20)
whilenot End1%
WaitInput
If %key=2
BREAK
ElseIf getfocus(a%)
let End1%=1
ElseIf getfocus(d1%) Dialog wird durch Klick im Fenster-Kreuz beendet
let dlg%=Createdialog(%hwnd,Dialog 1,300,250,200,200)
let b%=createbutton(dlg%,Ende,50,150,50,20)
let End2%=0
print
print Nur das Dialog-Fenster wird durch Klick ins Fenster-Kreuz beendet!
whilenot End2%
WaitInput
If %key=2
BREAK
ElseIf getfocus(b%)
let End2%=1
EndIf
EndWhile
@DestroyWindow(dlg%)
ElseIf getfocus(d2%) Dialog wird durch Klick im Fenster-Kreuz beendet aber nicht zerstört
ein zweiter Klick schließt das Hauptfenster
let dlg%=Createdialog(%hwnd,Dialog 2,300,250,200,200)
let b%=createbutton(dlg%,Ende,50,150,50,20)
let End2%=0
whilenot End2%
WaitInput
If %key=2
print
print Beim nächsten Klick schließt auch das Hauptfenster!
BREAK
ElseIf getfocus(b%)
@DestroyWindow(dlg%)
let End2%=1
EndIf
EndWhile
ElseIf getfocus(d3%) Dialog wird durch Klick im Fenster-Kreuz beendet und
das Hauptfenster wird beendet da auch hier die If %key=2 Abfrage
eingebaut ist
print
print Beim nächsten Klick schließt auch das Hauptfenster!
let dlg%=Createdialog(%hwnd,Dialog 3,300,250,200,200)
endif
endwhile
end
Und weiterhin frohes Fest, ein gutes neues Jahr und frohes Arbeiten mit XProfan. Ein Verwaltungsbeispiel (Profan 6.6) mit Listendarstellung aus meinen Profananfängen findest du unter [web]https:///www.pliete.de/Links/links_02.html[/web] |
|
|
| |
|
|