Español
Foro

Problema con Datenbank

 

Peter
Gückstock
¡Hola,
Yo bin todavía no largo aquí en el Comunidad y komme todavía no bastante así klar,
wo y cómo Yo mi Frangen a el richtigen Punto escribir. Yo versuche lo simplemente hier.

Mein Problema es folgendes: Yo habe una DB III Datenbank en eien Listbox eingelesen. In el Listbox markiere Yo una Línea y möchte ahora el Feldinhalte des entsprechenden Datensatzes para el weitere Berechnung obtener.
Für una Lösungsvorschlag wäre Yo Euch dankbar.
(Bin Principiante con qualmendem Kopf)
KompilierenMarcaSeparación
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  
 



movido después de Programación / Allgemein / Einsteigerfragen

Bitte Fuente siempre con [ code] quelltext [ /code] einkapseln - habs oben korgieriert.

Welche Profanversion Usted nutzt solltest Usted en Su Signatur eintragen.
 
18.02.2007  
 




Thomas
Freier
Siehe dir el Listbox7 a, como se el erklärt.
Aus allen Feldern uno Línea se una String producido, en el el Felder (Spalteninhalt) por una Tabulatorbyte (oder @Chr$(09) ) getrennt voluntad. Diese Signo voluntad entonces por / oder Andere .......con @Translate$(Feld$,, / ) ersetzt.
Der Inhalt uno Feldes se entonces con @Substr$(Feld$,N,/) ermittelt (N = Spalte).
Soll direkt en una Datensatz el Datenbank zurückgegriffen voluntad, z.B. en MEMO-Felder auszulesen, es sinnvoll, en el 1. Spalte con BREITE=0, el Datensatznummer (&dbRecNo) a speichern.

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




Peter
Gückstock
Hola Tomás,

Yo möchte mich para mi späte Antwort entschuldigen, pero yo war betrieblich eingespannt y había para media PC gar no Tiempo mehr.

vielen Dank para Su Ayuda, lo funktioniert ahora.
Aber ahora Yo zwei weitere Fragen:
1. ¿Cómo se puede uno el Schriftart y el Zeichengröße beim Einlesen el Daten de el Datenbank en el Listbox verändern (zB. el Schrift vergrößern)? Mi Versuche con setfont waren ergebnislos.
2. Kann uno individual Datensätzen en el Listbox diferente Schriftfarbe zuordnen? (en z.B. zusammengehörige Datensätze de los otro farblich a unterscheiden)

Mi Profanversion: 6.6

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




Thomas
Freier
¡Hola Peter,

Schriftänderung para Dialoge usw. sólo encima UseFont S,N1,N2,N3,N4,N5
Lo puede sólo Farben para el Tabla, no para una Spalte oder Línea vorgegeben voluntad (mein Kenntnisstand).
Gruppendarstellung Tuve por Einsatz de Icons getestet. El necesario sí no el de Profano como en el Ejemplo ser. Pero Geschmackssache.
Um deine Wünsche umzusetzen, kommst du Yo no en Franks LISTVIEW herum. Lohnt se para Einsteiger aber sólo de XProfan 8.0 . El Anpassung para 6.6 es no así simplemente. Also SH-Xprofan 8/9 y Franks LISTVIEW hier besorgen y testen.
Como el LISTVIEW Shareware es, sería Yo heute XProfan 10 testen, d.h., el Ayuda Expediente hier besorgen y studieren, si el Versión alles el qué du realisieren willst sin Franks LISTVIEW kann.

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




Thomas
Freier
Apéndice:

se lo en Profano 6.6 bleiben y Gruppen por Icons gekennzeichnet voluntad,
hier después de Iconen suchen ( Michael Wodrich ?) oder con
> Z-Icon.exe Tool puede Sie no sólo vorhandene Icon-Archivos bearbeiten,
>pero auch Icons de Archivos z.B. EXE, DLL y ICL auslesen, Editar.....
beschaffen y en el eigenen Programa el Profano-Icon con
>P-Icon-Changer.exe
(debería hier para encontrar ser) austauschen.

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




Michael
Wodrich
Hola Tomás,

como hast Usted wohl Su HTML-Info en una Notepad-Ventana para Umkopieren elaborado...
Hay no Links mehr en Deinem Texto.

Yo no Icons en meiner HP. Und algo como en Datenbanken a ermöglichen, como hilft el ListView de Frank Abbing. Auch el Einfärben el Zeilen es así posible.

¿Puede Su Posting sí otra vez bearbeiten y el Links hinzufügen. Über el Editfenster el Globus con el Kettenglied benutzen...

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
24.02.2007  
 



Um Links para enviar necesario esta simplemente sólo reinkopiert voluntad - URLs voluntad doch vollautomatisch en Links konvertiert...
 
24.02.2007  
 




Thomas
Freier
¡Hola Michael,

verwende eigentlich en el Principio no Links. Auch en el Vereinswebseiten, deren Webmaster Yo bin, voluntad en el Gästebuch no Links zugelassen oder de me abgeändert. Denke, así puede ser el leidige Thema, gerade hier sólo diskutiert, de el Weg ir.
Zu el Icons : hier oder bajo profano.de hatte uno una ZIP con Iconen angeboten. Wer?
In Gerhards Listview - para Profano 6.6 - kann el 1.Spalte una Icon zugeordnet voluntad. Selbst verwendet .
So como Peter Gückstock lo antes ha, Artikelgruppen deutlicher hervorzuheben, würden sí einfarbige Icons reichen, el él bien incluso con IrfanView.exe oder el Z-Icon.exe de :
Andreas Baumann
Softwareservice
Flottenstr. 58
D-13407 Berlin
redactar kann. Webadresse en el Programa no benannt. Ursprung: 1999/2002.
Irgendwo beim Suchen después de Icon-Programmen el Downloadadresse gefunden.

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




Peter
Gückstock
Gracias para Eure Tipps. Yo habe el así gelöst:
Jeder Artikel el Gleichen Gruppe bekommt en el ersten Feld el Datenbank el gleiche Ziffer zugewiesen. Nach el Einlesen en el Listbox y anschließendem Sortieren después de dieser Spalte Yo zusammenhängende Blöcke obtener.

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



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

4.566 Views

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

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie