Deutsch
Forum

Rechnungswerte aktualisieren

 
Um mein Problem zu erläutern, zuerst ein Bildchen

Wenn nun die im Beispiel betonte Zeile gelöscht oder in die andere Anzeige kopiert wird, stimmt der Rechnungsverlauf nicht mehr. - Wie kann ich es lösen, dass sich die Anzeige verbessert, also aktualisiert ? - Es müsste gehen, aber ich habe absolut keine Vorstellung von einem Anfang - wer hilft ?
Die Datei (oder andere) wird als CSV-Datei gespeichert da sie in der Listview.dll von Frank angezeigt wird.
Für Freaks: Man beachte die Datumsanzeige !

54 kB
Kurzbeschreibung: Beispiel aus MoneyGuard-2
Hochgeladen:30.12.2007
Ladeanzahl155
Herunterladen
 
30.12.2007  
 




Michael
Wodrich
Auslesen der Zeile
Wert ermitteln
Dann
- löschen (Wert abziehen)
- verschieben (hier Wert löschen, dort addieren)

Verständlich?

Wird ein feines Tool.

Schöne Grüße
Michael Wodrich

Ich weiß nicht, ob Du eine Message über die Lösch- oder Drag&Drop-Tätigkeit erhälst. Wenn das nicht der Fall ist, dann wird unten ein Knöpfchen Löschen bzw Verschieben den Prozess in Gang setzen.
 
Programmieren, das spannendste Detektivspiel der Welt.
30.12.2007  
 



@Michael
Soweit war ich auch schon - Den Wert der gelöschten (kopierten) Zeile vom letzten Gesamtwert abziehen und (wenn kopiert) in der neuen Anzeige zuzählen. Soweit, so gut. Die anderen Einträge sind aber dann nicht aktualisiert worden.
Wenn ich z. B. 5 Einträge hab und jeder ist anders im Wert und ich lösche den zweiten Eintrag, stimmt der Rechnungsverlauf im 3. und 4. Eintrag nicht mehr. Der Endwert im 5. Eintrag wäre dann wieder richtig und da liegt mein Problem
 
30.12.2007  
 




Thomas
Freier
Ich würde die Beträge als +999 oder -999 einfügen und speichern ohne Zwischenstand.
Wenn der Istbetrag, der ja gross angezeigt wird, nicht reicht, die Werte der letzten Spalte beim Anzeigen ausrechnen lassen. Beim Datum könntest du durch Prüfen ein Vordatieren verhindern. Wird eine Buchung verändert, einfach die letzte Spalte neu berechnen lassen.
 
Gruß Thomas
Windows XP SP2, XProfan X2
31.12.2007  
 




Dieter
Zornow
Hallo Horst,

ich wuerde ueber eine Schleife die kompletten Werte neu berechnen.

Gruss aus Bangkok

Dieter
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
31.12.2007  
 



@Dieter


ich wuerde ueber eine Schleife die kompletten Werte neu berechnen.


Den Gedanken hatte ich schon, aber wie ??? -

@Thomas
Das mit der Datumsanzeige hast Du falsch verstanden. Auf Wunsch eines einzelnen Herren habe ich das automatische Datum aus der Version 1 (MoneyGuard) so umgestaltet, dass jetzt jede Datumseingabe entweder über das Kalendertool aus Windows, mit eigenen Eingaben oder automatisch möglich ist. Eine Kontrollfunktion soll dann Termine für Zahlungen oder Eingänge melden. -

Mein Problem ist nach wie vor die Aktualisierung der Rechnungswege.

@Frank
Kann es sein dass Du Listview_Funktionen.inc unter XProfan-11 angleichen musst oder hab ich eine veraltete Version der Include-Datei ?
 
31.12.2007  
 




Frank
Abbing

Kann es sein dass Du Listview_Funktionen.inc unter XProfan-11 angleichen musst oder hab ich eine veraltete Version der Include-Datei ?


Inwiefern?
 
31.12.2007  
 




Thomas
Freier
Nur ein schnell gestricktes Muster aus einer anderen Anwendung:
KompilierenMarkierenSeparieren
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Franks ListView
Declare lvdll&,bereich#,bytes&
Declare handle&,indexline&,status&,x&,xn1!,xn2!
vdll&=usedll(bvr/Listview.dll)
 $I Listview_Funktionen.inc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Mein Konto ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Proc Rechne_MeinKonto

    DIM bereich#,1024
    Decimals 2
    GetItemText(listview_B&,bereich#,2,0)
    text$=String$(bereich#,0)
    SetItemText(listview_B&,addr(text$),3,0)

    WhileLoop GetLines(listview_B&)

        GetItemText(listview_B&,bereich#,3,(&Loop-1))
        xn1!=val(String$(bereich#,0))
        GetItemText(listview_B&,bereich#,2,&Loop)
        xn2!=val(String$(bereich#,0))
        text$= str$(xn1! + xn2!)
        SetItemText(listview_B&,addr(text$),3,&Loop)

    EndWhile

    AddItemValues(listview_B&,2,bereich#,2)
    SetText num33&,Kontostand:  + String$(bereich#,0)
    Dispose bereich#

EndProc

Proc Konto_Liste

    Def @Waitmessage(0) !USER32,WaitMessage
    Declare num33&,Boot_dlg&,listview_B&,BP_but1&,BP_but2&,BP_but3&,BP_but4&,BP_but5&,BP_but6&
    Boot_dlg& = @Create(Window,%hwnd,   Mein Konto ,50,24,896,680)
    Zeile neu
    BP_but1& = CreateButton(Boot_dlg&,Neu,40,620,80,25)
    Zeile löschen
    BP_but2& =  CreateButton(Boot_dlg&,Löschen,160,620,80,25)
    Liste speichern
    BP_but5& =  CreateButton(Boot_dlg&,Speichern,650,620,80,26)
    Ende Button
    BP_but4& =  CreateButton(Boot_dlg&,Ende,740,620,80,25)
    num33&=@Control(STATIC,,$50000080,350,624,160,13,Boot_dlg&,1,%hinstance,$1000)
    SetFont num33&,lfont&
    listview_B&=CreateListView(Boot_dlg&,%hinstance,Rgb(0,0,0),Rgb(250,250,250),-1,$21)
    InsertColumn listview_B&,Eingabe / Ausgabe,490,0
    InsertColumn listview_B&,Datum,100,1
    InsertColumn listview_B&,Betrag,100,1
    InsertColumn listview_B&,Stand,100,1
    text$=MeinKonto.csv
    bytes&=@FileSize(text$)

    If bytes&>0

        Dim bereich#,bytes&
        ReadFileQuick(addr(text$),bereich#,0,bytes&)
        CsvToListview(listview_B&,bereich#,bytes&,4)
        Dispose bereich#

    EndIf

    SetFont listview_B&,lfont&
    AutoSortListview listview_B&,1,1,1
    ShowListView(listview_B&,32,22,820,560)
    Rechne_MeinKonto
    InitMessages(Boot_dlg&)
    EnableEdits(listview_B&,1)
    @SetFocus(Boot_dlg&)
    Usecursor 0

    While %Menuitem<>-2

        @Waitmessage()
        x&=GetVar(0)

        IfNot x&

            Rechne_MeinKonto

        EndIf

        If GetFocus(BP_but2&)

            x&=GetSelectedLine(listview_B&)        Nummer der markierten Zeile abfragen
            case x& > 0 : Sendmessage(listview_B&,$1008,x&,0)    Zeile löschen

        ElseIf GetFocus(BP_but1&)                 Erzeugt eine neue Zeile, scrollt dort hin

            und selektiert sie (alle anderen werden deselektiert)
            SetItem listview_B&,,,
            x&=GetLines(listview_B&)
            SelectLine(listview_B&,(x&-1),1)

        ElseIf GetFocus(BP_but5&)

            text$=MeinKonto.csv
            x&=GetNeededMemory(listview_B&,1)
            Dim bereich#,x&
            x&=ListviewToCsv(listview_B&,bereich#,0,0)
            x&=WriteFileQuick(addr(text$),bereich#,0,x&)
            Dispose bereich#
            MessageBox  Liste gespeichert...,Information,$40040
            @SetFocus(Boot_dlg&)

        ElseIf GetFocus(BP_but4&)

            BREAK

        EndIf

        Usecursor 0

    Wend

    @DestroyWindow(Boot_dlg&)

Endproc

################################## H A U P T T E I L ####################################
WINDOWSTYLE 512+8+2
WINDOW 1,1-%maxx,710
SETTRUECOLOR 1
Cls RGB(230,230,200)
USEFONT Arial,16,0,0,0,0
SETDIALOGFONT 1
Declare text$
var  lfont& = @Create(Font,Arial,15,0,0,0,0)
Konto_Liste
freedll lvdll&
DeleteObject lfont&
 $I Listview_Dispose.inc
End

CSV-Anhänge mag er nicht. Erzeuge mit dem Inhalt eine : MeinKonto.csv
KompilierenMarkierenSeparieren
Einnahme ,2007-01-01,1000.00,1000.00
 
Gruß Thomas
Windows XP SP2, XProfan X2
31.12.2007  
 



@Frank


Inwiefern?


Mit der Version 11 meckert XProfan über die Sub... in Deiner listview_funktionen.inc - Roland hat dazu extra eine Inc-Datei mitgeliefert für alte Programme profalt.inc für alte Profan-Programme, die keine Operatoren benutzen. Daher dachte ich, dass Du das Sub in Deiner INC auch modernisieren müsstest
 
31.12.2007  
 



@Thomas
KompilierenMarkierenSeparieren
GetItemText(etatO&,bereich#,3,2)
teil$=String$(bereich#,0)
print teil$
GetItemText(etatO&,bereich#,4,(anzO%-1))
end$=String$(bereich#,0)
print end$
teil!=VAL(teil$)
end!=VAL(end$)
end!=(end!-teil!)
betragO$=STR$(end!)
print betragO$
Sendmessage(etatO&,$1008,2,0)
OBEN_AKTIV Hier wird die Anzeige in einer eigenen Procedur aktualisiert

So sieht mein Probecode aus und ich denke, dass unterm Strich das herauskommt, was mir vorschwebt.
Printen tut er schon mal das, was ich will. Jetzt nur noch in die Schleife und dann neu abspeichern.
(Wunder Dich nocht über die grossen O - da ich mit zwei Anzeigen arbeite, hab ich die Variablen mit Oben und Unten getrennt)
 
31.12.2007  
 




Frank
Abbing

Daher dachte ich, dass Du das Sub in Deiner INC auch modernisieren müsstest


Natürlich, mit der neuen Version gibt es dann eine geänderte Inc. Ist sowieso erheblich schlanker geworden, da ich sechs Procs und Defs jetzt direkt in die Dll integriert habe.
 
31.12.2007  
 



@Frank

[offtopic] Nun verrate uns doch mal, wer die Hübsche auf Deinem Atavar ist ? - Deine Enkelin oder... ? [/offtopic]
 
31.12.2007  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.110 Betrachtungen

Unbenanntvor 0 min.
Peter Max Müller13.11.2017

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie