vfp表单grid表用vfp insertt blank befo命令插入记录时提示“必须用独占方式打开...”,如何解决?

有关VFP表的问题
有关VFP表的问题
表的别名有什么用途?
例:当你使用 use 表名 IN 0 语句打开表后又不知其确定的工作区时,用sele 别名&
语句可方便准确的找到(或指定)你需要的表
别名就是表的另一个名字,它起到快速引用表的作用。
比如:有一张表为:ASDDFFGGGJJJ,你使用如下命令。
USE ASDDFFGGGJJJ IN 0 ALIAS DB
那么,下次你用这张表的时候就可以直接用DB了,
比如THISFORM.TEXT1.VALUE=DB.NAME
如果表被打开表必有名的,临时表也一样,一般地临时表在内存中存在,没有文件形式上的。可由VFP的命令生成,如SQL语句!其实也不必理会工作区的概念,因为很少同时打开200多个表的,要操作到某表时一般是这样:
if used("mydbf")
&&如果已打开表mydbf
&&那么选择表mydbf作为当前工作区
&& use mydbf in 0
&&否则选择空闲的工作区打开表mydbf
&&确保当前的工作区是打开表mydbf的而不是其它表的工作区
这里主要是select
和表名(或者说表的别名)对工作区不作详细的区分,只有空闲的和当前的,当前的也就是活动的,工作区是不能两个同时是活动的,要操作哪个就用select
临时表生成请参考SQL的select 语句,VFP可自动分清是SQL语句和上面选择工作区的命令的!
使用 SELECT-SQL 语句的各个子句,可以指定多种不同的输出目标来保存查询结果。
若要将查询结果输出到&&&
使用此子句
独立的表&&&&&&&&&&&&&&&
INTO TABLE mytable
数组&&&&&&&&&&&&&&&&&&&
INTO ARRAY aMyArray
临时表&&&&&&&&&&&&&&&&&
INTO CURSOR
mytmp&&&&&&&&&&
&&(mytmp就是临时表)
活动窗口&&&&&&&&&&&&&&&
浏览窗口&&&&&&&&&&&&&&&
如果没有指定其他目标,则用它作默认值。
如临时表名为:xhtmp用代码可这样:
&&&&&&&&&&&&
select xhtmp &&选择xhtmp
&&&&&&&&&&&&
&&使指针指到第一条记录,如果希望到最后即用goto
&&&&&&&&&&&&
ThisForm.Grid1.RecordSourceType=1
&&&&&&&&&&&&
ThisForm.Grid1.RecordSource="xhtmp"
&&&&&&&&&&&&
ThisForm.Grid1.refresh
用gird当然好点,也可用其它如文本框,但要移动指针;查找后生成数组也可,临时表也可,临时表比较好操作且直观!最好是用SQL语句,因为不管什么语言的SQL语句基本上差别不大,为你以后学另一种语言打基础,大型数据库语言大多数操作都用SQL语句。
怎样从表中选择重复的记录?
select * from table a where exists (select * from table b where
b.key = a.
having count(*) & 1 ) order by fieldlist
select * from table where key in ( select key from table group
by key having count(*) & 1) ;
order by fieldlist
vfp的表的最大容量是多少?
2 gb,且在将来版本中该限制可能被取消。
显示符合条件的记录数&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
在进行查询或记录筛选时,要返回符合条件的记录数,可用下面代码:
  Public aa0 &&.定义变量
  Count to aa0
&&.符合条件的记录数赋给变量
Thisform.Text1.Value=aao
&&.在文本框中显示出记录数
在第N条记录之前插入一条新的记录应该怎么输入?
n&&&&&&&&&&&先将指针指向该记录
insert before
blank&&&&在该记录之前插入空白记录
日期字段中如何显示(XXXX/XX/XX)这种形式?
在主程序中加入以下语句:
SET CENTURY
打开日期中的世纪&&&&&&&
YMD&&&&&&&
设置日期格式为年/月/日
set mark to
'/'&&&&设置分格符
从表A向表B中增加记录,使用 APPD FROM
表A、表B哪个是打开的?哪个是关闭的?
完整的写法:
uae b &&打开B表
append from
a.dbf  &&从A表添加数据到B表内.
B表必须打开,而A表可开可闭
现有一xsxm.dbf,其中有'姓名'、'性别'两个字段。我想用命令将其分别改为'xm'、'xb'。应该怎样做?
select 字段1,字段2..,姓名 as xm,性别 as xb from xsxm into cursor curtemp
&&按要生成你的新表,字段2..,是指你另有几个就加几个
select * from curtemp into table xsxm
&&按新表结构和数据覆盖,但要注意xsxm应该是自由表才可以,不能加入数据库。
浏览表的按钮的代码:
brow title '登记一览表' noedit nodelet noappen font '宋体',9
&&这里的“9”是字号
如何调整表中记录的记录号,使记录号与记录的“序号”字段相同?
假设你的序号为字符型
repl all 序号 with allt(str(recn()))
假设你的序号为数值型
repl all 序号 with recn()
&foxpro&中判断一个数据库或数据表文件是否存在,系统自带的有这种功能的&File()函数,示例:
IF &FILE('foxuser.dbf') &
&WAIT &WINDOW
&'Visual &FoxPro
&resource &file
&present' &
&WAIT &WINDOW
&'Visual &FoxPro
&resource &file
&not &present'
我有一个学生成绩表里面有:姓名、考号、班级、数学分数、语文分数字段。我想求每个班的语文平均分和数学平均分,并将班级及各科的平均分放在一个表中,如何实现?
select 班级,avg(数学分数) as 数学平均分,avg(语文分数) as 语文平均分 from 表 group by
班级 into table dbfresult
直接打印表的命令时什么?&&可用
&&use 你的表
&&list fields 字段名 TO PRINTER
筛选一个表中某几列到一个新表中的命令是什么?
字段1名,字段2名... from 你的表 into table dbftemp
自动删除表中所有的空记录?
delete from 你的表 where empty(你的字段)
insert before
blank&&&&在当前记录的前面插入记录
blank&&&&&&&&&&&在当前记录的后面插入记录
在vfp的主窗口的状态栏中显示“record
unlocked”,这正常吗?说明什么问题?
当一个表用共享方式打开时, 就会在状态栏显示这一信息。
表用共享方式打开时,不能执行PACK等需要独占打开的命令。表用独占方式打开后(未关闭前),不允许再次打开,网络上的其他人也无法打开该表。
用共享方式打开表的方法, 举例如下:
USE d:\tmp\sysinfo.dbf SHARED
SET EXCLUSIVE OFF
USE d:\tmp\sysinfo.dbf
用独立方式打开表的方法, 举例如下:
USE d:\tmp\sysinfo.dbf EXCLUSIVE
SET EXCLUSIVE ON
USE d:\tmp\sysinfo.dbf
如何有条件的把一个表中的某些记录拷贝到另一个表中?
select&*&from&mytable&where&...&into&mycursor
select&mydesttable
append&from&dbf("mycursor")
use&in&mycursor
方法很多:
首选:select&...&from&...&where&...
还有:appe&from&...&for&...&和&copy&to&...&for&..
检测数据表是否已被其他用户使用
①&&&
网络用户:
m.hqopen=fopen('c:\temp\hqclgl.dbf',12)
=fclose(m.hqopen)
If m.hqopen=-1
?”文件已被打开”
②&&&
单机用户:
if used("表名")
?”表正在使用中”
为一个表做备份的命令(在名窗口中输入):
USE 〈表1〉〈回车〉
COPY TO 〈表2〉
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。用sql语句向数据表中插入记录的格式为:
INSERT INTO [数据库名!] 表名 [(字段名表)] VALUES (表达式表)
关于Insert语句的格式及用法请参考:sql语言教程。
本例对看实例学VFP:向数据表中添加记录时自动生成编号一例的插入数据部分用sql语句进行了改写,运行界面如下图:
本例用到了&数据1&数据库中的&网站信息表&,关于该数据库的情况已经在看实例学VFP:示例数据库一文中给出,这里不再详述。
制作步骤如下:
一、新建表单form1,并将其Caption属性值设为&用sql语句向数据表中添加记录&,AutoCenter属性值设置为.t.,widht属性值设为290,height属性值设为210,将其保存为&用sql语句向数据表中添加记录.scx&。
二、向表单添加一个grid控件,将其readonly属性设置为.t.,其RecordSourceType值采用默认的&1-别名&,在表单设计器中将其宽和高粗略调小一些即可,具体属性值我们将在表单的init事件代码中对其进行设置。
三、向表单添加三个Label控件,其属性值依次设置为&编号&、&网站名称&和&网站网址&,将这三个控件排成一列;在这一列Label控件右侧添加三个文本框控件,属性值不用设置采用默认即可,也把它们排成一行;在第一个文本框的右侧添加两个命令按钮command1和command2,其Caption属性值依次设置为&添加&和&退出&。适当调整一下各控件的大小和位置,&表单设计器&如下图所示:
四、添加事件代码:
(一)表单form1的unload事件:
set exact off
close data
(二)表单form1的init事件:
set exact on
set talk off
use 网站信息表
this.Text1.value=""
this.Text2.value=""
this.Text3.value=""
with this.grid1
.width=290
.height=110
.recordsource="网站信息表"
.deletemark=.f.
.visible=.t.
.readonly=.t.
.ColumnCount=3
.Column1.Header1.Caption="编号"
.Column1.Header1.BackColor=RGB(255,255,190)
.Column2.Header1.BackColor=RGB(255,255,190)
.Column2.Header1.Caption="网站名称"
.Column3.Header1.BackColor=RGB(255,255,190)
.Column3.Header1.Caption="网站网址"
.Column1.width=75
.Column2.width=80
.Column3.width=150
this.grid1.Setall("DynamicBackColor","RGB(224,225,255)","Column")
calculate max(编号) to maxbh
&&在数据表中查找出序号最大的记录
szbh=val(right(maxbh,3))
&&取出数字部分
if szbh=0 then &&判断数字部分是否为0
zdbh='wz001'
zdbh='wz'+padl(alltrim(str(szbh+1)),3,'0') &&生成自动编号
this.Text1.value=zdbh
this.Text1.readonly=.t.
this.Text2.setfocus
(三)命令按钮command1(&添加&按钮)的click事件代码:
b=alltrim(thisform.Text2.value)
c=alltrim(thisform.Text3.value)
if empty(b) &&此条件成立则说明该文本框是空的
messagebox("请输入网站名称",16,"系统提示")
locate for 网站名称=b
if .not.eof() &&此条件成立,说明要添加的内容和表中有重复的
messagebox("不允许有重复的网站名称",16,"系统提示")
if empty(c)
messagebox("请输入网站网址",16,"系统提示")
locate for 网站网址=c
if .not.eof()
messagebox("不允许有重复的网站网址",16,"系统提示")
msg=messagebox('确定要添加记录吗?',32+4,'系统提示')
INSERT INTO 网站信息表;
(编号,网站名称,网站网址) ;
VALUES(alltrim(thisform.Text1.value),;
alltrim(thisform.Text2.value),;
alltrim(thisform.Text3.value))
messagebox('保存记录成功!',64,'系统提示')
thisform.grid1.refresh
calculate max(编号) to maxbh
&&在数据表中查找出序号最大的记录
szbh=val(right(maxbh,3))
&&取出数字部分
if szbh=0 then
&&判断数字部分是否为0
zdbh='wz001'
zdbh='wz'+padl(alltrim(str(szbh+1)),3,'0')
&&生成自动编号
thisform.Text1.value=zdbh
thisform.Text2.value=""
thisform.Text3.value=""
thisform.Text2.setfocus
thisform.refresh
(四)命令按钮command2(&退出&按钮)的click事件代码:thisform.release
五、运行&用sql语句向数据表中添加记录.scx&。
vfp基础教程:/vfpjc/index0.htm
vfp初级教程:/cc/index.htm
vfp中级教程:/mcc/mcc.htm
vfp高级教程:/hcc/hcc.htm
VFP网络开发:/VFPwz/vfpwlkf.htm
vfp调用api函数:/VFPwz/vfpapi.htm
VFP报表打印:/VFPwz/vfpreport.htm
VFP常用技术:/VFPwz/vfpcyjs.htm
VFP经验汇总:/VFPwz/vfpjyhz.htm
VFP控件使用:/VFPwz/vfpkjsy.htm
VFP数据处理:/VFPwz/vfpsjcl.htm
本例代码在Win2003+VFP6.0环境下调试通过。
查看全套&菜鸟也学VFP&教程
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
论文写作技巧
上一篇:下一篇:
相关经验教程共有 2947 人关注过本帖
标题:怎样让表单已独占方式打开数据环境里的表?
等 级:新手上路
帖 子:13
&&问题点数:0&&回复次数:3&&&
怎样让表单已独占方式打开数据环境里的表?
我想彻底清理数据,需要以独占方式打开表。最好是数据环境自动以独占方式打开表。SET EXCLUSIVE ON命令,放哪儿都不起作用,config.fpw、主程序(主文件是程序)、表单的init事件,甚至放在数据环境里的BeforeOpenTables里,都没起作用,纳闷。
在表单的init事件里重新用独占方式打开表,表单上边的Grid控件变空了,想重新指定数据源,提示找不到变量,明明我写的是表的别名。不知道哪里出错。
搜索更多相关主题的帖子:
等 级:新手上路
帖 子:23
那你是不是设用了FILTER,或者是查询之类的命令,那样系统会提示找不到变量.
等 级:新手上路
放在主程序中.
然后打开时采用
use 表名 exclusive
这样的表就是独占方式打开的表.
爱伊开发技术网:
域名和空间申请网:http://www.aiyit.net
爱伊技术论坛:/bbs
等 级:新手上路
打开表单数据环境,设置表的属性:exclusive属性为.t.
版权所有,并保留所有权利。
Powered by , Processed in 0.048657 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved}

我要回帖

更多关于 vfp grid 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信