含有varchar字段的sql表,在vfp中用远程视图对应为memo类型,在设计表单时有问题

yestoyes 2006-12-18 01:54:30
含有varchar字段的sql表,在vfp中用远程视图对应为memo类型,在设计表单时问题如下:

如sql表中有记录,在设计表单时不能直接拖放各字段。(只能先加控件,再设定数据源)

如sql表中无记录,拖放正常。

如在视图中不要这一字段(varchar),一切正常。

以上在vfp5.0 6.0 8.0均同一现象,不知哪位遇到过?如何解决?
(我现在只能是先在视图中不加入这一字段,表单设计完后,再加入这一字段,以方便设计时操作)
...全文
568 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
caixia615 2006-12-22
  • 打赏
  • 举报
回复
up,学习了
十豆三 2006-12-21
  • 打赏
  • 举报
回复
原因我也不知道。


我一直在用VFP+XP。所以问题也不多。


建议用XP,因为估计MS在XP下的测试要多于W2000

我现在的习惯是开发用XP,服务器用W2000 SERVER
yestoyes 2006-12-21
  • 打赏
  • 举报
回复
谢谢大家!
从两位老大的回复来看,好象是vfp与win2000之间匹配问题,但我一直以来都是用的win2000,以前工作中也有类似的表,但这问题是最近刚发现的,以有没有遇到过.

换句话说,是不是什么地方的设置有问题呢?因为我以前工作用机有两三台,有的是win2000,有的是win98,难道以前碰巧绕过了这个问题?

再次感谢两位大侠出手,其实对于一个真正意义上的写程序的人来说,有问题并不没什么,都会以其他的方法解决.就象本题来说,因为是原用的一个系统中要新增一个表单,一开始只是发现不能直接拖放,以为是系统有问题,但经过测试,系统是没有问题.

然后,一个表,一个字段的排除,最后才发现是出于这一字段的原因.但我想这还不是原因,应该还有其他原因吧,所以才拿出来与大侠们探讨(因为我的工作已经完成了,但还不知原因在哪).

十豆三 2006-12-18
  • 打赏
  • 举报
回复
VFP9.0+SQL SERVER2000+WIN2000

测试结果:

与帖主一样。

说明VFP9.0在Win2000还是有问题呀。
十豆三 2006-12-18
  • 打赏
  • 举报
回复
好的,我试试

我是:VFP9.0+SQL SERVER2000+XP
wwwwb 2006-12-18
  • 打赏
  • 举报
回复
TO apple_8180:
我在WIN2000SP4+SQL SERVER2000下测试,代码与你的一致
十豆三 2006-12-18
  • 打赏
  • 举报
回复
我测试结果与帖主及WWWWB不一样。

不管是一个字段还是多个字段都可以拖放。

不管有没有记录也可以拖放。

XP+VFP9.0

以下我的视图SQL代码,找找区别吧:表名TMP,一个字段,名称为VC 类型varchar 3000长度,

SELECT Tmp.vc;
FROM ;
dbo.tmp Tmp

DBSetProp(ThisView,"View","SendUpdates",.T.)
DBSetProp(ThisView,"View","BatchUpdateCount",1)
DBSetProp(ThisView,"View","CompareMemo",.T.)
DBSetProp(ThisView,"View","FetchAsNeeded",.F.)
DBSetProp(ThisView,"View","FetchMemo",.T.)
DBSetProp(ThisView,"View","FetchSize",100)
DBSetProp(ThisView,"View","MaxRecords",-1)
DBSetProp(ThisView,"View","Prepared",.F.)
DBSetProp(ThisView,"View","ShareConnection",.F.)
DBSetProp(ThisView,"View","AllowSimultaneousFetch",.F.)
DBSetProp(ThisView,"View","UpdateType",1)
DBSetProp(ThisView,"View","UseMemoSize",255)
DBSetProp(ThisView,"View","Tables","dbo.tmp")
DBSetProp(ThisView,"View","WhereType",3)

DBSetProp(ThisView+".vc","Field","DataType","M")
DBSetProp(ThisView+".vc","Field","UpdateName","dbo.tmp.vc")
DBSetProp(ThisView+".vc","Field","KeyField",.T.)
DBSetProp(ThisView+".vc","Field","Updatable",.T.)
十豆三 2006-12-18
  • 打赏
  • 举报
回复
以为你是问为什么变成MEMO字段了。
wwwwb 2006-12-18
  • 打赏
  • 举报
回复
测试了一下,
1、在SQL SERVER表中只有一个字段的情况下确实是这样的,
可以用EDIT控件;
2、在SQL SERVER表中有一个字段以上的情况下,可以直接拖放;
3、抢分之说不成立,虚拟分有什么用?
4、我出这帖,一方面也是为新手一个参考,因为我的问题本身已经解决(虽然是变通),也许有新手正在郁闷,所以才发这帖。
实际上你自己多测试一下,即可找到解决方法。
yestoyes 2006-12-18
  • 打赏
  • 举报
回复
我要的就是memo型,我不是问为何是memo,为什么有那么都的老大答非所问?

抢分?!

分有何用?!

我出这帖,一方面也是为新手一个参考,因为我的问题本身已经解决(虽然是变通),也许有新手正在郁闷,所以才发这帖。

这里是交流的地方,我只是发现这一现象,一时不知问题的真正原因,希望老大们指点指点。
yestoyes 2006-12-18
  • 打赏
  • 举报
回复
老大,看清楚题目!!!!!!!!!!!!!

我要问的是:设计表单时不能拖放,如何解决??????????????

(题中我已告知我目前的变通方法)
十豆三 2006-12-18
  • 打赏
  • 举报
回复
说明SQL Server表中的这个字符型字段的长度超过了254,
因为VFP的字符型字段的最大值254,如果超过了这个数,就认为MEMO字段了。

解决方法:
如果SQL Server表中的字段长度在255以内也够用的话,就把SQL Server中的这个字符型字段长度改为254。
如果这个字段内容确实超过了254,就只能用MEMO对应了
wwwwb 2006-12-18
  • 打赏
  • 举报
回复
varchar长度为3000,应该与长度无关吧
NO,在VFP中,字符型最长为255,超过为MEMO即备注型。
十豆三 2006-12-18
  • 打赏
  • 举报
回复
长度大于255就自动对应MEMO字段了。
yestoyes 2006-12-18
  • 打赏
  • 举报
回复
varchar长度为3000,应该与长度无关吧
wwwwb 2006-12-18
  • 打赏
  • 举报
回复
还没有没遇到过此问题,varchar长度为多少?
yi10000 2006-12-18
  • 打赏
  • 举报
回复
关注中...

2,748

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧