上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
芝風
註冊時間: 2006-08-09 文章: 45 來自: 台灣,巴西
第 1 樓
|
發表於: 星期六 九月 09, 2006 11:53 pm 文章主題: 想要請問跨表單的問題… |
|
|
很謝謝之前各位前輩的大力相助
現在改了一些東西,是跨表單的
是這樣的:
一張表是記錄人員資料,另一張表是記錄人員的借貸東西資料
張三,男,二十五戲,未婚 張三,鉛筆一隻
現在想要在刪除人員資料的時候,順帶刪除人員的借貸資料
作了以下程式:
DELETE * from stuff_in_used where stuff_in_used.User== thisform.pageframe1.page1.txtName_of_user.Value
DELETE
=TABLEUPDATE(.t.)
stuff_in_used就是記錄人員借貸資料的表
現在當我執行時,他會先出現一個視窗,問我要開哪張表,選擇stuff_in_used之後,他卻把「不是」張三的資料全都mark起來
我曾經在之前加過use stuff_in_used 但是因為我在最早的一開始就open database,所以他出現file in use
不知道怎麼回事,求大大幫忙
另一個問題是,我不是查詢別的表單,而是本身的表單
就是formA 源自表user_data
現在我設一個查詢,當輸入名字時,grid會自動指向這個名字
我新設了一個text1,在text1.activechange()中寫:
SELECT * FROM user_data WHERE user_data.Name_of_user==thisform.text1.value
thisform.GrdUser_data.refresh
可是當我輸入字的時候,他卻跑出一張table,而不會在grid中指向我要的那筆資料
不知道該如何解決,求幫
還有另一個小問題,請問各位大大如何執行刪除動作?
DELETE
=TABLEUPDATE(.t.)
這樣只能把資料mark起來,而無法刪除
我有聽說要執行pack database的動作,可是不知道各位大大是在哪執行??
謝謝 _________________ 一籬一櫓一漁舟,一個艄公一釣勾
一拍一呼還一笑,一人獨佔一江秋
~清.紀昀~ |
|
回頂端 |
|
 |
liangszpt

註冊時間: 2004-11-18 文章: 263 來自: な东省深圳市
第 2 樓
|
發表於: 星期日 九月 10, 2006 3:47 am 文章主題: Re: 想要請問跨表單的問題… |
|
|
芝風 寫到: |
現在想要在刪除人員資料的時候,順帶刪除人員的借貸資料
|
这个过程好像不对,应该是删除人员时,先去查查这个人有没有借过东西,如果借过还未还的,不应该删除,如果的确是要删除的,应该是先删除他借的东西,再去删除这个人。
芝風 寫到: |
作了以下程式:
DELETE * from stuff_in_used where stuff_in_used.User== thisform.pageframe1.page1.txtName_of_user.Value
DELETE
=TABLEUPDATE(.t.)
stuff_in_used就是記錄人員借貸資料的表
現在當我執行時,他會先出現一個視窗,問我要開哪張表,選擇stuff_in_used之後,他卻把「不是」張三的資料全都mark起來
|
出现视窗,是因为你的指令找不到TABLE,所以会弹这个窗口出来。使用DELETE之前,要确保有没有打开stuff_in_used这个表,还要SELECT为当前表,才好去DELETE。
还有。。。为什么你用完SQL指令后,还加一个DELETE的????
出现视窗,可能就是这一句。
你说为什么执行完没有把张三的删除到,可能是因为这句
stuff_in_used.User== thisform.pageframe1.page1.txtName_of_user.Value
==和=,是不同的,==是要求两边的值完全相等(包括空格)
‘A ’和‘A’,在==时的值为.F., 在 = 的时为 T
相关的,你可以参考一下SET EXACT 指令的用法。
改成这样试试
alltrim(stuff_in_used.User)== alltrim(thisform.pageframe1.page1.txtName_of_user.Value)
芝風 寫到: |
另一個問題是,我不是查詢別的表單,而是本身的表單
就是formA 源自表user_data
現在我設一個查詢,當輸入名字時,grid會自動指向這個名字
我新設了一個text1,在text1.activechange()中寫:
SELECT * FROM user_data WHERE user_data.Name_of_user==thisform.text1.value
thisform.GrdUser_data.refresh
可是當我輸入字的時候,他卻跑出一張table,而不會在grid中指向我要的那筆資料
不知道該如何解決,求幫
|
芝風 寫到: |
還有另一個小問題,請問各位大大如何執行刪除動作?
DELETE
=TABLEUPDATE(.t.)
這樣只能把資料mark起來,而無法刪除
我有聽說要執行pack database的動作,可是不知道各位大大是在哪執行??
謝謝 |
对于SELECT....FROM这样的命令加上一个临时名给它,不然VFP会用BROWSE窗口去打开你SELECT出来的结果的。改成这样
SELECT * FROM user_data WHERE user_data.Name_of_user==thisform.text1.value INTO CURSOR TMPCURSOR
记得在关闭FORM时
IF USED('TMPCURSOR')
USE IN TMPCURSOR
ENDIF
或
SELECT * FROM user_data WHERE user_data.Name_of_user==thisform.text1.value INTO ARRAY tmpArray
参考下SELECT 。。。FROM在VFP中的语法。
要用PACK,就在要USE TABLE 时,加上EXCLUSIVE,这样才可以做到PACK和ZAP的动作。
如果你是在DATA ENVIRONMENT打开TABLE的话,在这个TABLE的PROPERTY的EXCLUSIVE设定为.T.
PACK你可以任何地方做,一般在退出程序时做。 _________________ 我的理想是能成为古代的一位富家公子,
日常生活就是喝茶去怡香院,没事带茪@班小打手在街上调戏良家妇女。 |
|
回頂端 |
|
 |
芝風
註冊時間: 2006-08-09 文章: 45 來自: 台灣,巴西
第 3 樓
|
發表於: 星期日 九月 10, 2006 7:09 pm 文章主題: Re: 想要請問跨表單的問題… |
|
|
liangszpt 寫到: | 芝風 寫到: |
現在想要在刪除人員資料的時候,順帶刪除人員的借貸資料
|
e程好像不薄AG是f除人滿A先去查查炊H有呇陪e[西,如果借ex未x的,不Gf除,如果的确是要f除的,G是先f除他借的[西,再去f除炊H。 |
這…如果sql找不到這人的資料,是空集合,那不就也沒辦法刪了嗎?
liangszpt 寫到: |
出cS窗,是因o你的指令找不到TABLE,所以玥﹞f出S。使用DELETE之前,要确保有呇野{stuff_in_used牧瞴Ax要SELECTo憳e表,才好去DELETE。
x有。。。o什么你用完SQL指令后,x加一枋ELETE的????
出cS窗,可能就是惜@句。
你So什么蠾瑽呇釦E三的f除到,可能是因o悼y
stuff_in_used.User== thisform.pageframe1.page1.txtName_of_user.Value
==和=,是不同的,==是要求U坁滬完全相等(包括空格)
‘A ’和‘A’,在==漯滬o.F., 在 = 的o T
相蛌滿A你可以穧狺@下SET EXACT 指令的用法。
改成II
alltrim(stuff_in_used.User)== alltrim(thisform.pageframe1.page1.txtName_of_user.Value) |
這可能是我沒講清楚
一張formA 對應tableA,而formA其上的所有元件,grid跟textbox等,都是用dataenvironment拉出來的,而現在因為是寫在要刪除tableA的資料的按鍵上,所以後面有一個delete-是指delete tableA的資料
而那一行sql是要刪除另一張table上相對應的資料
liangszpt 寫到: |
薑_SELECT....FROM猼漫R令加上一Z漲WH它,不然VFP悒咷ROWSE窗口去打{你SELECT出S的C果的。改成
SELECT * FROM user_data WHERE user_data.Name_of_user==thisform.text1.value INTO CURSOR TMPCURSOR
荓o在睢ORM
IF USED('TMPCURSOR')
USE IN TMPCURSOR
ENDIF
或
SELECT * FROM user_data WHERE user_data.Name_of_user==thisform.text1.value INTO ARRAY tmpArray
穧狺USELECT 。。。FROM在VFP中的N法。
要用PACK,就在要USE TABLE 滿A加上EXCLUSIVE,牏~可以做到PACK和ZAP的藃@。
如果你是在DATA ENVIRONMENT打{TABLE的O,在枚ABLE的PROPERTY的EXCLUSIVE扣wo.T.
PACK你可以任何地方做,一般在退出程序滌窗C |
那個第一個問題我改用do while下去做
GO TOP
DO WHILE NOT EOF()
IF thisform.text1.Value=user_data.name_of_user
EXIT
ELSE
SKIP 1
ENDIF
ENDDO
thisform.refresh
這種的就是在同一張table上運作,有辦法用sql嗎?還是用這種do while?do while會不會比較慢呢?
那另一個問題就是我有兩欄,人員名跟ID,現在我另做一個optiongroup,來讓使用者決定是用哪個來搜尋
但是我不知道如何來判斷使用者是選擇option1或是2??
pack的做法是要先關掉database嗎?
這部份整個的流程我還是不太懂…
我的流程是這樣:
loginform--->其他的form
那我在loginform時在form.init() 有寫 open database
那在其他的form因為都是用dataenvironment去拉的,所以不用寫 use table名?
那最後在quit的時候,要怎麼寫??
close database
pack database
??
謝謝大大解惑! _________________ 一籬一櫓一漁舟,一個艄公一釣勾
一拍一呼還一笑,一人獨佔一江秋
~清.紀昀~ |
|
回頂端 |
|
 |
芝風
註冊時間: 2006-08-09 文章: 45 來自: 台灣,巴西
第 4 樓
|
發表於: 星期一 九月 11, 2006 7:02 pm 文章主題: |
|
|
求幫一下,拜託! _________________ 一籬一櫓一漁舟,一個艄公一釣勾
一拍一呼還一笑,一人獨佔一江秋
~清.紀昀~ |
|
回頂端 |
|
 |
liangszpt

註冊時間: 2004-11-18 文章: 263 來自: な东省深圳市
第 5 樓
|
發表於: 星期一 九月 11, 2006 8:05 pm 文章主題: |
|
|
1,這…如果sql找不到這人的資料,是空集合,那不就也沒辦法刪了嗎?
对空集合,当然也有办法
Select * from myTable where Exp1 = Exp2 into cursor tmpTable
可以用Eof('tmpTable')去判断,如果为真值,就代表是空集了。
2 那另一個問題就是我有兩欄,人員名跟ID,現在我另做一個optiongroup,來讓使用者決定是用哪個來搜尋
但是我不知道如何來判斷使用者是選擇option1或是2??
thisform.optiongroup.value会告诉你,使用者是选择了那一个OPTION
那最後在quit的時候,要怎麼寫??
3 close database
pack database
先pack再Close,只是PACK命令要求TABLE是以EXCLUSIVE,上面我有给你提到过,怎么去设。 _________________ 我的理想是能成为古代的一位富家公子,
日常生活就是喝茶去怡香院,没事带茪@班小打手在街上调戏良家妇女。 |
|
回頂端 |
|
 |
芝風
註冊時間: 2006-08-09 文章: 45 來自: 台灣,巴西
第 6 樓
|
發表於: 星期一 九月 11, 2006 10:05 pm 文章主題: |
|
|
liangszpt 寫到: | 1,這…如果sql找不到這人的資料,是空集合,那不就也沒辦法刪了嗎?
薊韃隻X,撋M也有t法
Select * from myTable where Exp1 = Exp2 into cursor tmpTable
可以用Eof('tmpTable')去判吽A如果o真值,就代表是空集了。
2 那另一個問題就是我有兩欄,人員名跟ID,現在我另做一個optiongroup,來讓使用者決定是用哪個來搜尋
但是我不知道如何來判斷使用者是選擇option1或是2??
thisform.optiongroup.value悝i\你,使用者是u嶀F那一板PTION
那最後在quit的時候,要怎麼寫??
3 close database
pack database
先pack再Close,只是PACK命令要求TABLE是以EXCLUSIVE,上面我有H你提到e,怎么去式C |
謝謝幫忙
我第一點是因為說要先查查這人有沒有借過東西,那我的意思是說,如果這人沒借過東西,用sql查是空集合,也就刪不到任何資料,不是嗎?
可是我還是刪不了別張表格所對應的資料……
還有就算是空集合,那他是empty嗎?因為有一些地方要用empty()來判斷程式執行的部份
第二點搞定了,多謝!!但是grid允許多重選定嗎?
例如張三借了鉛筆,也借了原子筆,那在物品借用表中,就會有兩筆資料,有辦法讓grid選擇這兩筆資料嗎?
第三點還在尋找中…… _________________ 一籬一櫓一漁舟,一個艄公一釣勾
一拍一呼還一笑,一人獨佔一江秋
~清.紀昀~ |
|
回頂端 |
|
 |
|