0

最初にパーティ名用、2 番目に品質用、3 番目に注文書を保存するための 3 つのテーブルがあります。現在、テキストボックス付きの注文入力フォームを開発しています。1つのパーティーから同じ日に10または20以上の注文があり、品質が異なる場合、注文を入力するのは困難です. 今、私はグリッドでそれを作りたいです。最初に日付を選択してからパーティーを選択し、必要な数だけ注文を入力します。しかし、Visual Foxpro でこれを行う方法がわかりません。いくつかのサンプルまたは例を見つけるために多くのことを試みましたが、見つかりませんでした。ここでもう 1 つ言いたいのは、これが私の 4 フォーム アプリからの唯一のフォームであるということです。グリッドで計算を行う方法を知る必要があります。

助けてください。

4

2 に答える 2

0

このようなもの?

createtables()
ON ERROR 
oForm = CREATEOBJECT("myform")
oForm.visible = .t. 
READ EVENTS  
DEFINE CLASS mygrid as grid
    PROCEDURE init
        this.top = 40
        this.Left = 10
        this.Width = 450 
        this.ColumnCount = 6
        this.DeleteMark = .f.
        this.RecordMark = .f.
        this.RecordSource = "porders"
        this.column1.ControlSource = this.RecordSource + ".podate" 
        this.column1.Header1.Caption = "PO Date"
        this.column1.width = 75     
        this.column2.ControlSource = this.RecordSource + ".ponum" 
        this.column2.Header1.Caption = "PO Num"
        this.column2.width = 65
        this.column3.ControlSource = this.RecordSource + ".poparty"         
        this.column3.Header1.Caption = "Party"
        this.column3.width = 65
        this.column4.ControlSource = this.RecordSource + ".poqty" 
        this.column4.Header1.Caption = "Qty"
        this.column4.width = 65
        this.column5.ControlSource = this.RecordSource + ".poprice"
        this.column5.Header1.Caption = "Price"
        this.column5.width = 65
        this.column6.addobject("oqualities", "myqualities")
        this.column6.CurrentControl = "oqualities"
        this.column6.width = 65
        this.column6.sparse = .t.
        this.column6.Header1.Caption = "Quality"
        this.column6.ControlSource = this.RecordSource + ".poquality"       
    ENDPROC 
ENDDEFINE 
DEFINE class mycombo as combobox
    PROCEDURE init
        this.top = 10
        this.left = 150 
        this.Style = 2 
        this.RowSource = "parties.name"
        this.RowSourceType = 6       
    ENDPROC     
    PROCEDURE interactivechange
        SELECT (this.Parent.oGrid.RecordSource)
        lcVal = ["] + ALLTRIM(this.value) + ["]
        SET FILTER TO ALLTRIM(poparty) = &lcVal     
        this.Parent.ogrid.refresh()
    ENDPROC 
ENDDEFINE 
DEFINE class myqualities as combobox
    PROCEDURE init
        this.Style = 2
        this.RowSource = "qualities.desc"
        this.RowSourceType = 6      
    ENDPROC     
ENDDEFINE 
DEFINE CLASS mybutton as commandbutton
    PROCEDURE init
        LPARAMETERS tcMode
        this.Caption = tcMode
        this.Top = 250
        this.Left = 10
    ENDPROC  
    PROCEDURE click     
        IF this.Caption == "ADD"
            IF EMPTY(ALLTRIM(this.Parent.oparties.value))
                MESSAGEBOX("Please select party")
                RETURN .f.
            ENDIF 
            SELECT (this.Parent.ogrid.recordsource)         
            APPEND BLANK

            replace podate WITH this.parent.odate.value, ;
                    ponum WITH INT(RAND()*100000), ;
                    poparty WITH this.Parent.oparties.value, ;
                    poqty WITH 1                    

            this.Parent.ogrid.setfocus()
        ENDIF 
    ENDPROC 
ENDDEFINE  
DEFINE CLASS mydate as TextBox
    PROCEDURE init
        this.Value = DATE()
        this.Left = 10  
        this.Top = 10
    ENDPROC 
ENDDEFINE 
DEFINE CLASS myform as form
    PROCEDURE init
        this.AddObject("ogrid", "mygrid")
        this.AddObject("odate", "mydate")
        this.AddObject("oparties", "mycombo")
        this.AddObject("oAdd", "mybutton", "ADD")               
        this.ogrid.visible = .t.
        this.oparties.visible = .t.
        this.oAdd.visible = .t. 
        this.odate.visible = .t.        
        this.Height = 300
        this.Width = 470
        this.Visible = .t.
    ENDPROC 
ENDDEFINE 
PROCEDURE createtables
    IF !USED('parties')
        CREATE TABLE parties FREE (name c(20))
        INSERT INTO parties values("John")
        INSERT INTO parties values("Richard")
        INSERT INTO parties values("Melvin")
    ENDIF 
    IF !USED('qualities')
        CREATE TABLE qualities FREE (desc c(20))
        INSERT INTO qualities values("GOOD")
        INSERT INTO qualities values("BAD")
        INSERT INTO qualities values("SMELLY")
    ENDIF   
    IF !USED('porders')
        CREATE TABLE porders FREE (ponum i, podate D, poparty c(20), poqty n(10,2), poprice n(10,2), poquality c(20))
    ENDIF 
ENDPROC 
于 2015-06-22T14:58:00.667 に答える