VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

如何将grid中的数据(本地表.dbf)写到SQL数据库的表中

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
zfgg



註冊時間: 2004-05-31
文章: 179
來自: 中国

第 1 樓

發表發表於: 星期三 八月 11, 2004 4:27 pm    文章主題: 如何将grid中的数据(本地表.dbf)写到SQL数据库的表中 引言回覆

我正在研究grid。
我的想法是:在grid的某一个单元格中,加一个comboBox控件,ComboBox与数据表某字段捆定,当在comboBox控件中选中一个数据时,其它表格的单元格自动加入相应的值。其中有一个column6列。还有另外二个字段是空的,分别是column7列,column8列。我要在column7中填入数据后,自动与column6的值相乘,将积的结果自动显示在column8列中。然后再重复以上的方法。如果有多行,还要统计column8的和,并在表单的一个editbox控件中显示出来。
最后将grid的数据及其它的相关信息写到表中。

我现在研究的进展是:
不能在grid单元格的comboBox控件中选择数据,而是在表单中,单独放一个comboBox控件。在comboBox控件的keypress事件中,输入一个数据,从表中找出一个或第N个数据,将这个数据值增加(additem)到comboBox的列表中。在comboBox控件click事件中,选中某一个值时,将各个数据值存放到本地的一个临时表中。grid中即显示所选的数据。在“数量” 单元格(column7)中,填入数量后,回车,用数量乘以单价(column6),在另一单元格(column8)中显示结果(积),达到计算目的。同时,将各个的column8的和,累计放在一个editbox中。这些能运行通过。

删除grid中的某一条记录,用的deleted方法,进行标记。在删除按钮中的事件中,用
sele dluser
set delete on
sum ypjer to nTotal
thisform.text10.value=nTotal
thisform.grid1.recordsource="dluser"
thisform.refresh来实现。这种方法,只是不显示有删除标记的,实际上数据还在里面,用pack后,grid1呈现一空白。

附:
1,grid1的 init 事件:
thisform.command5.enabled=.f.
#INCLUDE sumahead.H
set exclusive on
use _path_loc+"dluser"
delete all
pack
set delete on
thisform.grid1.recordsource='dluser'

2, grid1的 deleted 事件:
LPARAMETERS nRecNo
publi _xmdm
if nRecNo => 1
if deleted()=.t.
thisform.command5.enabled=.f.
else
go nRecNo
_xmdm=xmdm
thisform.command5.enabled=.t.
endif
endif

3,combo1的krypress 事件:
LPARAMETERS nKeyCode, nShiftAltCtrl
if nKeyCode=13
#INCLUDE sumahead.H
handle=sqlconnect(SQLDSN_LOC,SQLUSER_LOC,SQLPWD_LOC)
_ypdm=alltrim(this.text)
cx="select xmdm,xmmc,pym,xmxgg,xmxdw,ykdj from wjbmms where pym=?_ypdm"
tf=sqlexec(handle,cx,'temp')
if tf>-1
select temp
if recc()>0
this.clear
for i =1 to recc()
go i
this.additem(xmdm+xmmc+pym+xmxgg+xmxdw+str(ykdj,10,2) )
endfor
this.displayvalue=this.list(1)
endif
endif
sqldisconnect(handle)
endif

4,combo1的click 事件:
#INCLUDE sumahead.H
public _xmdm,_xmmc,_pym,_xmxgg,_xmxdw,_ykdj
for icount =1 to thisform.combo1.listcount
if thisform.combo1.selected(icount)
select temp
go icount
_xmdm=xmdm
_xmmc=xmmc
_pym=pym
_xmxgg=xmxgg
_xmxdw=xmxdw
_ykdj=ykdj
*wait window str(_ykdj,10,2)
if !used('dluser')
use _path_loc+"dluser"
endif
select dluser
append blank
replace xmdm with _xmdm
replace xmmc with _xmmc
replace pym with _pym
replace xmxgg with _xmxgg
replace xmxdw with _xmxdw
replace ykdj with _ykdj
exit
endif
endfor
this.displayvalue=''
thisform.refresh

5,自定议的表单autocount事件:
LOCAL nAcCol,nReCol,nReRow,nCol6val,nCol7val
nAcCol=This.Grid1.ActiveColumn &&获得当前列
nReRow=This.Grid1.RelativeRow &&获得当前相对行
nReCol=This.Grid1.RelativeColumn &&获得当前相对列
IF nAcCol< This.Grid1.ColumnCount &&不到表格的列尾
This.Grid1.ActivateCell(nReRow,nReCol-1) &&-1=column6.text1.value.如果不-1, 都用第一个値的数相乘
nCol6val=thisform.grid1.column6.text1.value
nCol7val=thisform.grid1.column7.text1.value
thisform.grid1.column8.text1.value=nCol6val*nCol7val
thisform.text10.value=thisform.text10.value+(nCol6val*nCol7val)
nCol6val=0
nCol7val=0
Thisform.combo1.Setfocus
ELSE &&到达列尾,自动移动到第一列
Thisform.Grid1.Column1.Setfocus
This.Grid1.ActivateCell(nReRow,1)
ENDIF
Thisform.Refresh

6,在grid1.column7.text1 keypress事件中调用autocount事件:
IF nKeyCode=13
NODEFAULT
Thisform.Autocount
ENDIF

7, 删除grid1有标记的按钮事件:
if messagebox("现在要删除"+ _xmdm+",真的要删除吗?",36,"删除")=6
select dluser
set delete on
sum ypjer to _jiner
thisform.text10.value=_jiner
this.enabled=.f.
endif
thisform.refresh

ComboBox控件的additem的方法好象对字段的.null.值产生错误。下列语名运行时程序出错。
this.additem(xmdm+xmmc+pym+xmxgg+xmxdw+str(ykdj,10,2) )
其中的xmxgg与xmxdw是字符型。分别代表规格与单位。我试图重新赋值或用空字符串,都失败。

以上问题归纳起来有以下几个:
1、 在grid某一个单元格中加一个comboBox控件,要显示某一个字段的内容。若有N个,列表显示。其它的单元格显示相应的内容。
2、 如何将grid中的数据(本地表.dbf)写到SQL数据库的表中。
3、 如何删除grid中的某一条记录。使thisform.text10.value的值也相应减少。
4、 解决ComboBox控件的additem的方法中的.null.值错误。
5、 我目前用的上述方法,是否欠妥,还有没有更好的方法?
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作