0

I am having three tables first for Parties name, Second for Qualities and third for storing purchase orders. At present I developed order entry form with text boxes. It's difficult to enter order when I am having 10 or 20+ orders from one party in same date with different quality. Now I want to make it in grid. First select date then Party and enter orders as many as you want. But I do not know how to do this in Visual Foxpro. I tried a lot to find some samples or examples but failed to find. One more thing I want to mention here that this is my only one form from my 4 forms app. I need to know how to do calculations in grids.

Please help.

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
Gaurav Gupta
  • 1
  • 1
  • 1

2 Answers2

0

In the VFP command window, open the Task Pane Manager and choose Solution Samples. Search for grid and you'll find a bunch of examples on using grids.

Tamar E. Granor
  • 3,817
  • 1
  • 21
  • 29
  • I tried but not gtnd wht I want. One more thing I wuld like to mention here that Solution Samples not having any good sample to learn data grid programming. – Gaurav Gupta Apr 13 '13 at 09:51
0

Something like this?

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 
JustAspMe
  • 418
  • 1
  • 4
  • 18