Free Table test 資料表 有三欄位 no name descrip
insert 資料
REPLACE no WITH "003″, name WITH "電腦", descrip WITH "3500″
或 SQL 語法
INSERT INTO test(no,name,discrip) VALUES ("003″,"電腦","35000″)
GO TOP Flag Table頂部
GO BOTTOM Flag Table最底部 (注意:最底部是EOF,但 BOTTOM 不會到EOF)
SKIP Flag 在 Table 依序下一筆
SKIP -1 Flag 在 Table 依序上一筆
RECNO() 顯示Flag 位置 MESSAGEBOX(RECNO())
GO n n:號碼 GO 跳到指定 FLAG
LOCAT FOR Name = "ccc" AND Descrip = "GGG" 尋找指定 table 欄位 (注意:需用EOF() 查詢 為 .T. 代表沒找到 )
DELETE 刪除
RECALL 刪除找回來
SET DELETED ON 不顯示被刪除 Flag
FreeTables 開啟流程
SELECT 0 #開工作區
USE Free.dbf #使用 Free.dbf
BROWSE #瀏覽
USE #關閉 DBF
開啟模擬 SQL DataBase 流程
OPEN DATABASE c:\vfp\Lesson5\mydatabase.dbc #開啟指定Database
SET DATABASE TO mydatabase #指定資料庫
SELECT 0 #開啟工作區
USE NotFree #指定 TABLE 如果有多個 DATABASE 為 MyDataBase!NotFree
BROWSE #瀏覽
USE #關閉TABLES
CLOSE DATABASE #關閉DATABASE
於主程式內登打
CLEAR ALL #先關閉 所有FORM
CLOSE ALL DATABASE #關閉資料庫
cd c:\vfp\lesson5
OPEN DATABASE Data1 #開啟資料區
SET DATABASE TO DATA1 #切換指定資料區,如有多個
SELECT 0 #自動編號
USE TABLE1 #開啟工作區
GO TOP #Flag 先第一筆
DO FORM FORM1 #開畫面 FORM1 在docment 內form的檔
=MESSAGEBOX("END")
CLOSE DATABASE ALL #強制關閉資料庫
FORM 屬性修改
在 Daocments Forms 開新 Form1 ,並 FORM 屬性修改
Windows Type 屬性改為 1-Modal #獨佔依序
於 form 中新增 Grid 表格
開第一個 button ,Caption : insert into 插入資料
GO TOP
IN EOF() &假如是空的話 ,我就坐下面動作
INSERT INTO tables (prno,prna) VALUES ("001″,"鍵盤1″)
INSERT INTO tables (prno,prna) VALUES ("002″,"鍵盤2″)
INSERT INTO tables (prno,prna) VALUES ("003″,"鍵盤3″)
INSERT INTO tables (prno,prna) VALUES ("004″,"鍵盤4″)
ThisForm.Refresh
ENDIF
#清空DATA
SELECT table1
USE
SELECT 0
USE TABLE1 EXCLUSIVE &用最大權限打開並獨佔
ZAP &徹底刪除
GO TOP &&固定指令 跳到 頭
thisform.grid1.recordsource ="table1″ &這個 FORM 的 grid1 來源為 table1
thisform.refresh &&固定指令 刷新
#SKIP BUTTON
SKIP
IF EOF() &以下是怕掉到資料底部的下一區為Ture 就 Flag 到底部
GOT BOTTOM
ENDIF
thisform.refresh
#FLAG 上一筆
SKIP -1
this
ThisForm.refresh
#recno butoon
MESSAGEBOX( RECNO() )
#GO 指定編號 BUTTON
LOCAL m.cNumber n.nNumber
m.cNumber = INPUTBOX("請輸入編號,"1″,0,’1′,’1′)
m.nNumber = VAL(m.cNumber) &ˊstring 轉數字
IF (n.nNumber<=0 ) OR (m.nNumber> RECCOUNT() ) && RECOUNT()總筆數
MESSAGEBOX("超出範圍")
ELSE
GO m.nNumber
thisform.refresh
ENDIF
GO. m.nNumber
# DO While Button
SELECT table1
DO WHILE !EOF()
ThisForm.Refresh
MESSAGEBOX(prno+prna)
SKIP
ENDDO
GO BOTTOM
#scan 迴圈
&&適用資料庫
SELECT table1
SCAN
thisform.ReFresh
MESSAGEBOX(prno+prna)
ENDSCAN
#set filter 過濾 Button
LOCAL m.cCond
m.cCord = set("Filter")
IF EMPTY(m.cCond) &&這是記憶在 tables 上
SET FILTER TO (prno >="002″) AND (prno<="003")
ELSE
SET FILTER TO
ENDIF
GOTOP &&<----必須要
thisform.refresh
#LOCATE 定位 Button
LOCAL m.cPrno
m.cPrno = INPUTBOX("輸入編號")
LOCATE FOR prno = m.cPrno && "=" 非完全比對
IF EOF()
MESSAGEBOX("沒有這邊號")
GO TOP
ENDIF
thisform.refresh
#LOCATE FOR 定位關鍵字 BUTTON
LOCAL m.cPrno
m.cPrno = INPUTBOX("請輸入編號")
LOCATE FOR ( m.cPrno $ Prno ) OR ( m.cPrno $ Prna )
IF EOF()
MESSAGEBOX("NO FIND")
GO TOP
ENDIF
thisfrom.refresh
#Relpace 修改
LOCAL x
x = INPUTBOX("輸入品名")
IF !EMPTY(x)
IF !eof()
replace prna WITH x
ENDIF
thisform.Refresh
ENDIF
#replace 整批修改 限定範圍
LOCAL x
*x="整批修改"
x=INPUTBOX("請輸入修改名")
replace prna WITH x FOR(prno >="005″)
thisform.Refresh
GO top
#Update SQL
UPDATE Table1 SET prna="SQL整批修改 " WHERE (prno>="005″)
THisform.Refresh
#Recall
IF !EOF()
RECALL
ENDIF
thisform.Refresh
#Append blank
LOCAL m.cPrno, cx
m.cPrno = INPUTBOX("產品編號")
m.cPrno = PADR(cPrno,10)
IF !EMPTY(cPrno)
LOCATE FOR prno ==m.cPrno
IF !EOF()
MESSAGEBOX("重復")
RETURN
ENDIF
ENDIF
APPEND BLANK
REPLACE prno WITH m.cPrno
thisform.Refresh
#inster into 新資料
LOCAL m.cPrno, cx
m.cPrno = INPUTBOX("產品編號")
m.cPrno = PADR(cPrno,10)
IF !EMPTY(cPrno)
LOCATE FOR prno ==m.cPrno
IF !EOF()
MESSAGEBOX("重復")
RETURN
ENDIF
ENDIF
APPEND BLANK
*REPLACE prno WITH m.cPrno
INSERT INTO table1 (prno) VALUES (m.cprno)
thisform.Refresh
#append 新資料
CREATE CURSOR prod2 (prno c(10), prna c(10))
INSERT INTO prod2 (prno,prna) values ("100″,"1001inter")
INSERT INTO prod2 (prno,prna) values ("101″,"1002inter")
BROWSE
SELECT table1
APPEND FROM DBF("prod2″)
MESSAGEBOX(DBF("prod2″))
USE IN prod2
thisform.Refresh
#inster into ARRAY 陣列
DIMENSION myiarray[2]
SELECT * FROM table1 WHERE prno="002″ INTO ARRAY myarray
MESSAGEBOX(myarray[1])
MESSAGEBOX(myarray[2])
SELECT table1
INSERT INTO table1 FROM ARRAY myarray
thisform.Refresh
#Inster into 物件
LOCAL m.oRecord
SELECT table1
SCATTER NAME m.oRecord
MESSAGEBOX(m.oRecord.prno)
MESSAGEBOX(m.oRecord.prna)
m.oRecord.prno="999″
m.oRecord.prna="999na"
SELECT table1
INSERT INTO table1 FROM NAME m.orecord
thisform.Refresh
#Inster into 變數
LOCAL m.prno, m.prna
m.prno="012″
m.prna="電線"
SELECT table1
INSERT INTO table1 FROM memvar
thisform.Refresh
#indwx 索引檔
LOCAL x
x=INPUTBOX("input")
x=VAL(x)
MESSAGEBOX(x)
SELECT table1
USE
SELECT 0
USE table1 EXCLUSIVE
&&以上sop 有關刪除
DELETE TAG ALL &&刪除所有索引
INDEX on prna TAG prna_index
INDEX on prno TAG prno_index && index on 用 prno tag 製作排名檔
*SET ORDER TO prna_index && set order to index 排名
SET ORDER TO x
GO top
thisform.grid1.RecordSource="table1″
thisform.Refresh
#set order to tag
LOCAL m.ctag
SELECT table1
m.ctag=tag()
IF EMPTY(m.ctag)
SET ORDER TO prno_index
MESSAGEBOX("sort_prno")
ELSE
SET ORDER TO prna_index
MESSAGEBOX("sort_prna")
ENDIF
GO top
thisform.Refresh
#seek index 定位
LOCAL m.cPrno
m.cPrno = inputbox("input prno")
m.cPrno = PADR(cPrno,10)
SELECT table1
SET ORDER TO PRNO_INDEX && PRNO
SEEK m.cPrno
IF EOF()
MESSAGEBOX("no find" + m.cPrno)
ELSE
messagebox("find " + m.cPrno)
ENDIF
thisform.Refresh
#seek()
LOCAL m.cPrno
m.cPrno = INPUTBOX("產品編號")
m.cPrno = PADR(cPrno,10)
SELECT table1
IF !SEEK(m.cPrno,"table1″,"Prno_index")
MESSAGEBOX("no find " + m.cPrno)
ELSE
MESSAGEBOX("find " + m.cPrno)
ENDIF
thisform.Refresh
#indexseek() 進階
LOCAL m.cPrno
m.cPrno = INPUTBOX("input Prno")
m.cPrno = PADR(cPrno,10)
&& .T. 索引後指標 會跟著移動
&& .F. 索引後指標 不會跟著移動
IF INDEXSEEK(m.cPrno,.F.,"table1″,"Prno_index")
MESSAGEBOX("找到" + m.cPrno)
ELSE
MESSAGEBOX("沒找到"+ m.cPrno)
ENDIF
IF EOF()
GO bottom
ENDIF
thisform.Refresh