佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 35453|回复: 824

Visual FoxPro 的疑难杂症

[复制链接]
maybird_2 该用户已被删除
发表于 7-3-2005 04:51 PM | 显示全部楼层 |阅读模式
这是我第一次以华文发表编程的问题。因为想到这里有好几个很不错的SQL高手和CLIPPER/FOXPRO高手。

我是用VB6,通过ODBC DSN LESS的FOXPRO DBF DRIVER来使用SQL读取DBASE的数据库。
很可惜,这个FOXPRO DBF DRIVER不让我使用TRUE或FALSE来表示LOGICAL FIELD。那个DBF文件有几个LOGICAL FIELD,LENGTH为一(1)。

请问,当我要写入LOGICAL FIELD时(在INSERT INTO...),要如何转换或表示BOOLEAN的值呢?

我试过:
-.T./.F.(或".T."/".F.")
-1/0(或"1"/"0")
-0/-1(或"0"/"-1")
-T/F(或"T"/"F")
-T/t(或"T"/"t")
-IIF(.T.,.T.,.F.)/IIF(.F.,.T.,.F.)
-L(.T.)/L(.F.)
-以及<c>$"Tt"(不过这个我可能用的不太正确)

我得到的错误不是"DATA TYPE MISMATCH",就是"'T'VARIABLE DOES NOT EXIST"。(还有一个错误就是"FUNCTION ARGUMENT,VALUE...INCORRECT")

真是山穷水尽了,GOOGLE了好几遍都找不到答案。
希望你们会的话,可以帮我解答。谢谢!

[ Last edited by maybird_2 on 7-3-2005 at 04:59 PM ]
回复

使用道具 举报


ADVERTISEMENT

发表于 9-5-2004 10:57 PM | 显示全部楼层

Visual FoxPro 的疑难杂症

1。请问要如何把 FILE 的 WINDOWS 和 MENU 的 WINDOWS 容入在一起?

2。请问要如何把 COMBO 里的 FILE show in Ascending?

3。请问可不可以在 COMBO 上直接 Accept Input?

---
合并狐狸所有疑难杂症主题

[ Last edited by 白日梦 on 7-4-2005 at 04:44 PM ]
回复

使用道具 举报

发表于 9-5-2004 11:08 PM | 显示全部楼层
不知所云.
请将问题讲明白点.
回复

使用道具 举报

发表于 10-5-2004 01:55 PM | 显示全部楼层
tstan135 于 9-5-2004 10:57 PM  说 :
1。请问要如何把 FILE 的 WINDOWS 和 MENU 的 WINDOWS 容入在一起?

2。请问要如何把 COMBO 里的 FILE show in Ascending?

3。请问可不可以在 COMBO 上直接 Accept Input?


tstan135,讲真的,第一道问题我真的不懂你问什么。

2. 你问的 file 是指 Child_table 吗?
   假如是的话,你在 Data Environment 的 cursor? 里的 order 不要空着
   use sex order sex

3. 不可以,当你输入的有在 Child table 的 field,
   ControlSource = Parent_table.sex
   RowSource = Child_table.sex
   RowSourceType = 6 - Fields
   列入,Child_table 的 sex field 只有 Male 和 Female 两个记录。
   你输入的 Unknown 是不能输进任何 Parent_table 或 Child_table

还有,建议你以后别开酱多帖,开一个帖连续下去,比如,
>Visual FoxPro 的疑难杂症<
因为,粉多的网友不知你是使用何种电脑语言编程。
回复

使用道具 举报

发表于 10-5-2004 04:24 PM | 显示全部楼层
1。我的 MENU 是 SET AS MAIN,所以当我 RUN 是就出现一个窗口。在这窗口里的打开 FILE 的 TLTLE BAR 不能容入在一起(把它 MAXIMUM 了), 所以会看到两个 TITLE BAR, 一个是 MENU 的另一个是 FILE 的。

2。如何把 COMBO 里的 FILE show in Ascending?
是当我把 COMBO 的 arrow 拉下 Combo Box 里的 Lists 会 show in Ascending。
白日梦,您刚说的应该在哪里打 COMMAND?

3。如何在 COMBO 上直接 Accept Input?
在 FOXPRO HELP FILE 里的 Accepting Input with a Combo Box Control 写是可以。但我
看不懂。

[ Last edited by tstan135 on 10-5-2004 at 05:20 PM ]
回复

使用道具 举报

发表于 11-5-2004 10:34 AM | 显示全部楼层
1. 你的menu1.mnx,disable了set as main
   加入Exit,procedure
   Clear Events
   Set sysmenu to Default
   用program档案main.prg来启动
   Set sysmenu to menu1.mpr
   Read Events

2. 在Project Manager,选Databases,再在any1.dbf create 它的 index

   然后,modify form时,打开View菜单,Data Environment项目,
   Add tables, any1.dbf
   这是,在Properties的Order里选出index tag

3. 下拉式物件(Combo object)是用来选出下拉列表的项目Item
   要增加里面的项目,用它的控件 Combo.AddItem(cItem)
回复

使用道具 举报

Follow Us
发表于 12-5-2004 03:06 AM | 显示全部楼层
白日梦 于 11-5-2004 10:34 AM  说 :
1. 你的menu1.mnx,disable了set as main
   加入Exit,procedure
   Clear Events
   Set sysmenu to Default
   用program档案main.prg来启动
   Set sysmenu to menu1.mpr
   Read Events

Proram error!
Alias 'MENU1' is not found.

2. 在Project Manager,选Databases,再在any1.dbf create 它的 index
   然后,modify form时,打开View菜单,Data Environment项目,
   Add tables, any1.dbf
   这是,在Properties的Order里选出index tag

还是不会show in Ascending!
再说这个 FORM 里有两个 COMBO BOX。

3. 下拉式物件(Combo object)是用来选出下拉列表的项目Item
   要增加里面的项目,用它的控件 Combo.AddItem(cItem)

还是不明白。什么是 Combo object?
要在那里打 COMMNAD, 要打什么?

[ Last edited by tstan135 on 12-5-2004 at 03:09 AM ]
回复

使用道具 举报

发表于 12-5-2004 09:47 AM | 显示全部楼层
我知道你是Visual FoxPro的初学者。试不到不用灰心。
我是10年前才开始用它的,而却是自学的,之前用的是Clipper

可能是我的教学使你难懂。
我所有相关的书藉都是在 MPH 书局买的,先找较浅的。
回复

使用道具 举报


ADVERTISEMENT

小李波特 该用户已被删除
发表于 12-5-2004 06:27 PM | 显示全部楼层

请问要怎样 lock 著 foxpro 的 database .

也就是说我不要让别人随便都可以 access 我的 database ..
可有方法???
回复

使用道具 举报

发表于 13-5-2004 09:19 AM | 显示全部楼层
有三种方法:

第一种
use ? exclusive 指令开启的档案是不给其它使用者开启,霸着来用。

file lock flock() 和 record lock rlock() 函数是用来处理网路档案分享开启
network file share access 是控制资料不给其它使用者读取。

第二种
在任何的输入控件,把原本的字串 Encrypt 了才存档。

第三种
请按这链接
回复

使用道具 举报

小李波特 该用户已被删除
发表于 13-5-2004 10:21 AM | 显示全部楼层
白日梦 于 13-5-2004 09:19  说 :
第一种
use ? exclusive 指令开启的档案是不给其它使用者开启,霸着来用。

file lock flock() 和 record lock rlock() 函数是用来处理网路档案分享开启
network file share access 是控制资料不给其它使用者读取。

第二种
在任何的输入控件,把原本的字串 Encrypt 了才存档。

第三种
请按这链接


第一种 不适合啦。。 整个 database 被 copy 过去。。 还不是被看到完。。。

第二种呢。。 我也试过。。 但是面对这样的问题。。 程式一开,先去 decrypt database 。。 程式关闭之前,先去 encrypt database。。 但是当程式关闭之前,电脑档机的话,然后程式从新开启, database 会被 encrypt 第二次,还不是完蛋大吉。。。 遇到高手的话。。 故意造成电脑档机,然后把 database 抄过去。。 还不是看到完。。。

至于第三种方法,我就没试过。。 不过会面对刚才上面第二种我所说的问题吗????
回复

使用道具 举报

发表于 13-5-2004 10:50 AM | 显示全部楼层
第二种,你误解我的意思,我讲的是,
用变数 Variable 读取资料栏 Field,才 Decrypt。
当你的变数改动过才 Encrypt 了写回资料栏。
使用时资料档是开着的。
抄过去的资料,12345别人只能看到!@#$%

如果遇上高手,那要怪你不好采罗!

第三种方法是我从Clipper Advance programming十几年前使用过的。
回复

使用道具 举报

小李波特 该用户已被删除
发表于 13-5-2004 11:04 AM | 显示全部楼层
针对 field 的话,我也试过,是很好,只是我的 system 有整百个 table, 真要针对所有的 field 做 encrypt/decrypt 的话,工程很庞大叻。。 应该也会拖慢系统的速度。。。

朋友, 可有其他方法???
回复

使用道具 举报

发表于 13-5-2004 11:22 AM | 显示全部楼层
你还有更好的,我也期待着!
回复

使用道具 举报

小李波特 该用户已被删除
发表于 13-5-2004 11:32 AM | 显示全部楼层
白日梦 于 13-5-2004 11:22  说 :
你还有更好的,我也期待着!


天啊。。。 你十多年经验都帮不到我。。 天亡我也。。。

有没有什么 3rd party 的软体可以使用???
回复

使用道具 举报

发表于 13-5-2004 12:12 PM | 显示全部楼层
小李波特 于 13-5-2004 11:32  说 :

天啊。。。 你十多年经验都帮不到我。。 天亡我也。。。

有没有什么 3rd party 的软体可以使用???


老兄,encrypt/decrypt 已经是很好的办法了............
当然如果有3rd party 的软体的帮助也可以不过要付出$$$。

试问,整百多个table,要花多少时间才可以看完 ?
如果是高手,不如自己动手重写一个还更快.................

除非那整百多个table的record也很少................

你可以多加一些Extra field,一些False Data 来迷惑,迷惑那些要偷看你的database的高手.......让他们短时间内找不到他们所要的东西...............
回复

使用道具 举报


ADVERTISEMENT

小李波特 该用户已被删除
发表于 13-5-2004 02:19 PM | 显示全部楼层
其实重点不是 table 的多少啦。。。
最主要有两个问题。。
1。 coding 太多了,要花很多时间做修改,不可能重做的啦。。
2。 就是怕遇到档机的问题,怕会造成资料重复被 encrpypt/decrypt。 要 recover 回来是很难担保的叻。。。 你们没有遇到这个问题咩???

唉。。 花时间修改还无所谓啦。。 就是第二点我觉得很危险叻。。。
回复

使用道具 举报

发表于 13-5-2004 03:15 PM | 显示全部楼层
这样我就不明白了, 你可以具体说明你的问题吗?最好给个例子..........  

到底是要防止别人copy 你的 database .. 或者防止有心人read 你database的资料........
还是........
回复

使用道具 举报

小李波特 该用户已被删除
发表于 13-5-2004 04:53 PM | 显示全部楼层
enry98 于 13-5-2004 15:15  说 :
这样我就不明白了, 你可以具体说明你的问题吗?最好给个例子..........  

到底是要防止别人copy 你的 database .. 或者防止有心人read 你database的资料........
还是........


防止有心人 read 我 database 的资料。。。

encrypt/decrypte 是很好的方法,只是我面对下面的问题。。。


第二种呢。。 我也试过。。 但是面对这样的问题。。 程式一开,先去 decrypt 。。 程式关闭之前,先去 encrypt 。。 但是当程式关闭之前,电脑档机的话,然后程式从新开启, database 会被 encrypt 第二次,还不是完蛋大吉。。。 遇到高手的话。。 故意造成电脑档机,然后把 database 抄过去。。 还不是看到完。。。

[ Last edited by 小李波特 on 13-5-2004 at 04:55 PM ]
回复

使用道具 举报

发表于 14-5-2004 04:12 PM | 显示全部楼层
小李波特 于 13-5-2004 04:53 PM  说 :


防止有心人 read 我 database 的资料。。。

encrypt/decrypte 是很好的方法,只是我面对下面的问题。。。



[ Last edited by 小李波特 on 13-5-2004 at 04:55 PM ]


我建议你不必每个 field 都去 encrypt,通常我只用在比较 Private & Confidential 的 field 如 password, salary, allowance, gross pay, net pay, etc.
一来可减少电脑速度上的负担。

你的方法是关闭了资料档才作保密 Encryption,这样很不安全。当机的话就没保密到。

要解决那个方法很简单,
1. 自己造 Encrypt( cField ) 和 Decrypt( cField ) 的 function,
2. 用 Set Procedure To Encryption.Prg
3. Use *.dbf 开启资料档
4. cBasic = Decrypt(Employee.BasicSalary)
5. 存档时, Replace BasicSalary With Encrypt(cBasic)

我到目前为止用过 4 种 Encryption 方法,
1. Cipther Encryption (A = 1, B = 2, C = 3)
2. Bit Switch Encryption (包括 And, Xor, Shift Left/Right)
3. Base Convertion (Decimal to Hexadecimal)
4. Mask Encryption
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 26-4-2024 10:28 PM , Processed in 0.072171 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表