Français
Forum

Problem avec banque de données

 

Peter
Gückstock
Salut,
je suis encore pas longtemps ici dans qui Community et viens encore pas entier so bien sûr,
wohin et comment je mon Frangen à qui richtigen Stelle schreibe. je versuche es simple ici.

mon Problem ist folgendes: j'ai une DB III banque de données dans eien Listbox lire. dans qui Listbox markiere je une la ligne et voudrais maintenant qui Feldinhalte des entsprechenden Datensatzes pour qui weitere Berechnung conservé.
Pour une Lösungsvorschlag wäre je Euch reconnaissant.
(suis Débutant avec qualmendem tête)
KompilierenMarqueSéparation
Programm-Kasse
unter Verwendung von Programm-Listbox4, Autor: Gerhard Putschalka
------Deklarationen
Declare LiBox&,BonBox1&,Zeile&,Anzahl&,BOk%,Anz_Spalten%,X%,Feld$,Zeile$,Lv_Liste#
Declare Dlg%,Ende%,InpFile$,SatzN%,OpCod$,Datum$,Betrag$,BOk%,Tx$,LV_Zeile&,Lv_Item#,LV_Selected#
declare LV_ColMask&,Listbox&,Number#,TxtBER#,Bon$,Bon3$,Bbox&,Kassieren%,UBox&
declare Epreis!,Gegeben!,EPreis$,Menge%,Posten!,Summe!,Umsatz!,Zurück!,übernehmen%,Art$,E%,S$
declare Bon2$,Bon1$,Bon0$,Zeilennummer%,Zeilennummer$,Index&,DsNr$,DsNr%
-----Definition der Funktion (link zum API)
Def @CreateWindowEx(12) ! USER32,CreateWindowExA
def GetSysColor(1) !USER32,GetSysColor
Def @GetSelectedCount(1) @Sendmessage(@&(1),$1032,0,0)
Dim TxtBer#,255    max. Textlänge einer Listboxzeile (sollte genügend groß sein)
Dim NumBer#,300    Größe = maximal auszuwählende Zeilen * 4 (bei Bedarf erweitern)
===========
Prozeduren
============
-----Modul1 Spalten für die Listbox erstellen

Proc Erstelle_Spalte

    Parameters Handle&,Maske&,Format&,Pixel&,Text$,Spalte&
    Long Lv_Liste#,0  = Maske&
    Long Lv_Liste#,4  = Format&
    Long Lv_Liste#,8  = Pixel&
    Long Lv_Liste#,12 = @add(Lv_Liste#,36)
    Long Lv_Liste#,16 = 220
    Long Lv_Liste#,20 = Spalte&
    string Lv_Liste#,36 = Text$
    @sendmessage (Handle&,$101B,Spalte&,Lv_Liste#)
    Inc Anz_Spalten%
    Return

Endproc

------Erstellen der Listboxen, Butten u.s.w.

Proc Erstelle_Dialog

    Let Dlg% = @CreateDialog(%Hwnd,Angebot,0,0,800,580)
    let Ende% = @createbutton(Dlg%,beenden,10,500,80,24)
    Let BOk% = @CreateButton(Dlg%,übernehmen,100,410,90,24)
    Let Kassieren% = @CreateButton(Dlg%,Kassieren,8,450,80,20)
    Usefont Ms Sans Serif,16,0,0,0,0
    setdialogfont 1
    Dim Lv_Liste#,256
    String Lv_Liste#,0 = SysListView32  muß SysListView32 lauten
    String Lv_Liste#,20 =
    Let LiBox& = @CreateWindowEx($0000280,Lv_Liste#,Lv_Liste#,$50408205,5,5,290,400,
    Dlg%,1,%hinstance,$200)
    @SendMessage(LiBox&,$1036,0,$00000023)  setze extended Style. $23 ist liniert.
    Let BBox& = control(LISTBOX,,$54A00148,550,50,200,350,
    Dlg%,2001,%HINSTANCE,$00020000)
    let UBox&=control(LISTBOX,,$54200140,250,80,280,60,
    Dlg%,2001,%HINSTANCE,$00020121)
    -------Einfügen der Spalten in die Listbox
    Erstelle_Spalte LiBox&,15,0,40,Nr.,0
    Erstelle_Spalte LiBox&,15,0,120,Artikel,1
    Erstelle_Spalte LiBox&,15,0,100,Preis,2
    Erstelle_Spalte BonBox1&,15,0,40,Nr.,0
    Let Anz_Spalten% = 3    initialisiere Spaltenzähler
    ----- initialisieren der Bereich für spätere Verwendung
    Long Lv_Liste#,0  = 1  Maske
    Long Lv_Liste#,4  = 0
    Long Lv_Liste#,8  = 0
    Long Lv_Liste#,12 = 0
    Long Lv_Liste#,16 = 0
    Long Lv_Liste#,20 = @add(Lv_Liste#,36)
    Long Lv_Liste#,24 = 220
    Long Lv_Liste#,28 = 0
    Long Lv_Liste#,32 = 0
    Return

EndProc

----------------------------------------------------
-----------------------Zeile hinzufügen

Proc Add_Zeile   füge eine Zeile zum Listview hinzu. Zeile& enthält die Zeilennummer.

    Declare X1%
    Long Lv_Liste#,4 = Zeile&  Zeile
    Long Lv_Liste#,8 = 0       Spalte
    Let X1% = 1               Schleifen- und Indexzähler
    String Lv_Liste#,36 = @$(X1%)
    @Sendmessage (LiBox&,$1007,0,Lv_Liste#)  Text in 1. Spalte
    Texte für die Spalten 2 - 3

    While (X1% < 3)

        Long Lv_Liste#,8 = X1%
        Inc X1%
        String Lv_Liste#,36 = @$(X1%)
        @Sendmessage(LiBox&,4142,Zeile&,Lv_Liste#)  Text in Folgespalte

    EndWhile

    Return
    ---------------------------
    Auswerten was selektiert wurde.
    Mit der Message $0190 wird ermittelt wieviele
    Zeilen markiert wurden.
    Mit der Message $0191 werden die Nummern der markierten Zeilen als LongInteger
    (= jeweils 4 Stellen) in die Bereichsvariable NumBer# übernommen.
    danach werden in der 2. Schleife  mit der Message $0189 die gespeicherten
    Zeilennummern ausgelesen und damit die jeweilige Textzeile in die Bereichsvariable
    TxtBer# übernommen.
    Let X%=0
    Let Anzahl&=@Sendmessage(ListBox&,$0190,0,0)
    @Sendmessage(ListBox&,$0191,Anzahl&,NumBer#)

    WhileNot (X% = Anzahl&)

        Let Index& = @Long(NumBer#,@Mul(X%,4))       Zeilennummer holen
        @Sendmessage(ListBox&,$0189,Index&,TxtBer#)  Text aus der Liste holen
        Inc X%

    EndWhile

EndProc

===========================================================
============Hier beginn mein Problem:======================
===========================================================

Proc Berechnen

    ---------------------------jetzt Eingabe, wieviele Artikel
    Menge%=0
    Menge%=@Input$(Anzahl:,ausgewählter Artikel,Menge%) funktioniert
    -------------------------
    Das Einlesen der Datenbank funktioniert auch .
    Jetzt möchte ich die Datensatznummer zur Bearbeitung erhalten, die der markierten
    Zeile in der Listbox entspricht.
    @dbOpen(#1,Sortiment_dbf.dbf)
    @dbUse(#1)
    DsNr$=Index&  mein Gedanke, Datensatznummer gleich Index von markierter Zeile
    @dbgo(DsNr$)  und dann zum entsprechenden Datensatz gehen
    geht aber nicht
    Momentan erhalte ich dummerweise immer den ersten Datensatz.
    die Berechnungen würden mit den richtigen Werten aus der DB auch funktionieren
    Epreis$=@dbGet$(Preis)   jetzt Preise berechnen und in Bon schreiben
    Art$=@dbGet$(Artikel)
    EPreis!=@val(EPreis$)
    Posten!=Menge%*EPreis!
    Decimals 2
    Summe!=Summe!+Posten!
    Decimals 2
    Umsatz!=Summe!
    Decimals 2
    Bon$=str$(Menge%),art$, Str$(EPreis!),  ,str$(Summe!)Str$(TxtBer#,0
    Bon3$=der Umsazt beträgt,str$(Umsatz!)
    @AddString(Bbox&,Bon$)

endproc

-----Modul Rückgeld berechnen

proc Rückgeld

    let Gegeben!=@input$(Bitte den vom Kunden erhaltenen Betrag eingeben,Eingabe,Gegeben!)
    Decimals 2
    Zurück!=Gegeben!-Summe!
    Decimals 2
    UseFont Arial,16,0,0,0,0
    SetDialogFont 1
    @AddString(Ubox&,Bon3$)

endproc

-----Modul Kassierung

proc Summe

    Bon3$=Summe,str$(Summe!)
    Bon2$=Gegeben,str$(Gegeben!)
    Bon1$=Rückgeld,str$(Zurück!)
    @Addstring(BBox&,--------------------)
    @Addstring(BBox&,Bon0$)
    @Addstring(BBox&,Bon3$)
    @Addstring(BBox&,Bon2$)
    @Addstring(BBox&,Bon1$)
    @Addstring(BBox&,Vielen Dank)

endproc

========================
Programm Start
========================
Erstelle_Dialog  erstelle Dialog, ListView, erstelle die Spalten
Let Zeile& = 0
jetzt öffnen wir die Kundendatei und lesen alle Sätze in die Listbox ein.
Let Anzahl& = @dbOpen(#1,Sortiment_dbf.dbf)
@dbUse(#1)
Let SatzN% = 0
Let OpCod$ = |<

While (SatzN% < Anzahl&)

    Inc SatzN% erhöhe Satzzahl
    @dbGo(OpCod$)
    Add_Zeile @dbGet$(lfdNr),@dbGet$(Artikel),@dbGet$(Preis)
    Let OpCod$ = >     für nächster Satz
    Let Zeile& = (Zeile& + 1)   erhöhe Zeilennummer

EndWhile

----------------------------------

WhileNot @GetFocus(Ende%)  1. Schleife bis beenden Button gedrückt wurde

    Hier kommen noch andere Module rein.

    if getfocus(BOK%)

        Berechnen

    Endif

    if getfocus(Kassieren%)

        Rückgeld
        summe

    endif

    -----------------Programm beenden
    waitkey  warte auf Ende-Button
    EndWhile   Ende_Schleife
    let E%=MessageBox(Wirklich beenden?,Programmende,282)
    -----------------Arrays freigeben
    Dispose TxtBer#
    Dispose NumBer#
    Disposeliste#
    @dbClose(#1)
    end
 
Peter G.
Win XP, XProfan10
18.02.2007  
 



déménagé pour Programmation / Allgemein / Einsteigerfragen

s'il te plaît Source toujours avec [ code] quelltext [ /code] einkapseln - habs dessus korgieriert.

quelle Profanversion Du utilise devrait Du dans Votre Signatur eintragen.
 
18.02.2007  
 




Thomas
Freier
Siehe dir qui Listbox7 à, là wird cela erklärt.
Aus allen Feldern einer la ligne wird un String erzeugt, dans dem qui Felder (Spalteninhalt) par un Tabulatorbyte (ou bien @Chr$(09) ) getrennt volonté. cet marque volonté ensuite par / ou bien autre .......avec @Translate$(champ$,, / ) ersetzt.
qui le contenu eines Feldes wird ensuite avec @Substr$(champ$,N,/) ermittelt (N = Spalte).
Soll direct sur une Datensatz qui banque de données zurückgegriffen volonté, z.B. um MEMO-Felder auszulesen, ist es sinnvoll, dans qui 1. Spalte avec BREITE=0, qui Datensatznummer (&dbRecNo) trop Sauver.

Salut
Thomas Freier
 
Gruß Thomas
Windows XP SP2, XProfan X2
18.02.2007  
 




Peter
Gückstock
allô Thomas,

je voudrais mich pour mon späte Antwort entschuldigen, mais j'étais betrieblich eingespannt et hatte pour meinen PC gar aucun Zeit plus.

vielen Dank pour Votre Aider, es funktioniert maintenant.
mais maintenant habe je deux weitere Fragen:
1. comment peux on qui Schriftart et qui Zeichengröße beim Einlesen qui données aus qui banque de données dans qui Listbox verändern (zB. qui Schrift agrandir)? mon Versuche avec setfont étions ergebnislos.
2. peux on individuel Datensätzen dans qui Listbox différent Schriftfarbe zuordnen? (um z.B. zusammengehörige Datensätze de den anderen farblich trop unterscheiden)

mon Profanversion: 6.6

Salut Peter Gückstock
 
Peter G.
Win XP, XProfan10
23.02.2007  
 




Thomas
Freier
allô Peter,

Schriftänderung pour Dialoge usw. seulement sur UseFont S,N1,N2,N3,N4,N5
Es peut seulement Farben pour qui Tabelle, pas pour une Spalte ou bien la ligne vorgegeben volonté (mon Kenntnisstand).
Gruppendarstellung J'ai eu par Einsatz de Icônes getestet. qui doit oui pas qui de Profan comment im Beispiel son. Ist mais Geschmackssache.
Um deine Wünsche umzusetzen, tu viens comment je pas um Franks LISTVIEW herum. Lohnt sich pour Einsteiger mais seulement ab XProfan 8.0 . qui Anpassung pour 6.6 ist pas so simple. alors SH-Xprofan 8/9 et Franks LISTVIEW ici besorgen et testen.
là qui LISTVIEW Shareware ist, serait je aujourd'hui XProfan 10 testen, d.h., qui Aider Dossier ici besorgen et étudier, si qui Version alles cela quoi du realisieren veux sans Franks LISTVIEW peux.

Salut
Thomas
 
Gruß Thomas
Windows XP SP2, XProfan X2
23.02.2007  
 




Thomas
Freier
Nachtrag:

soll es chez Profan 6.6 rester et Gruppen par Icônes gekennzeichnet volonté,
ici pour Iconen chercher ( Michael Wodrich ?) ou bien avec
> Z-Icon.exe Tool peut vous pas seulement vorhandene Icon-Fichiers Travailler,
>mais aussi Icônes aus Fichiers z.B. EXE, DLL et ICL auslesen, éditer.....
beschaffen et im eigenen Programme qui Profan-Icon avec
>P-Icon-Changer.exe
(devrait ici pour trouver son) austauschen.

Salut
Thomas
 
Gruß Thomas
Windows XP SP2, XProfan X2
24.02.2007  
 




Michael
Wodrich
allô Thomas,

là la hâte Du wohl Votre HTML-Info dans un Notepad-la fenêtre zum Umkopieren gezogen...
il y a aucun à gauche plus dans Deinem Text.

je hab aucun Icônes sur meiner HP. et quelque chose comme dans Datenbanken trop ermöglichen, là hilft qui ListView de Frank Abbing. aussi cela Einfärben qui Zeilen ist avec cela possible.

peux Dein Posting oui nochmal Travailler et qui à gauche hinzufügen. Über dem Editfenster den Globus avec dem Kettenglied benutzen...

belle Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
24.02.2007  
 



Um à gauche trop posten doit cet simple seulement reinkopiert volonté - URLs volonté doch vollautomatisch dans à gauche konvertiert...
 
24.02.2007  
 




Thomas
Freier
allô Michael,

verwende eigentlich im Prinzip aucun à gauche. aussi sur den Vereinswebseiten, en Webmaster je suis, volonté im Gästebuch aucun à gauche zugelassen ou bien de mir abgeändert. Denke, avec cela peux on cela leidige Thema, justement ici seulement diskutiert, aus dem Weg aller.
trop den Icônes : ici ou bien sous profan.de hatte einer une ZIP avec Iconen angeboten. qui?
dans Gerhards Listview - pour Profan 6.6 - peux qui 1.Spalte un Icon zugeordnet volonté. Selbst verwendet .
So comment Peter Gückstock es avant hat, Artikelgruppen deutlicher hervorzuheben, würden oui einfarbige Icônes reichen, qui il bien selbst avec IrfanView.exe ou bien qui Z-Icon.exe de :
Andreas Baumann
Softwareservice
Flottenstr. 58
D-13407 Berlin
erstellen peux. Webadresse im Programme pas benannt. Ursprung: 1999/2002.
Irgendwo beim chercher pour Icon-Programmen qui Downloadadresse trouvé.

Salut
Thomas
 
Gruß Thomas
Windows XP SP2, XProfan X2
24.02.2007  
 




Peter
Gückstock
merci pour Eure Tipps. j'ai cela so gelöst:
chacun Artikel qui Gleichen Gruppe bekommt im ersten champ qui banque de données qui gleiche Ziffer zugewiesen. Pour dem Einlesen dans qui Listbox et anschließendem Sortieren pour cette Spalte habe je zusammenhängende Blöcke conservé.

Salut Peter G.
 
Peter G.
Win XP, XProfan10
24.02.2007  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

4.583 Views

Untitledvor 0 min.
H.Brill12.07.2023
Georg Teles19.03.2016
holmol9324.04.2013
Stephie03.09.2011

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie