以下是引用freejike在2013-12-11 14:57:29的发言:
USE D:\cast
客户=alltrim(thisform.List1.value)
c_图号=alltrim(thisform.TxtC_图号.value)
c_版本=ALLTRIM(thisform.TxtC_版本.value)
c_规格=ALLTRIM(thisform.txtC_规格.Value)
c_型号=ALLTRIM(thisform.txtc_型号.Value)
c_铸件号=ALLTRIM(thisform.txtC_铸件号.Value)
c_日期=thisform.txtC_日期.Value
c_备注=thisform.edtC_备注.Value
WITH thisform
insert into CAST(客户,c_图号,c_版本,c_规格,c_型号,c_铸件号,c_日期,c_备注) VALUES (thisform.list1,thisform.txtC_图号,thisform.txtC_版本,thisform.txtC_规格,thisform.txtC_型号,thisform.txtC_铸件号,thisform.txtC_日期,thisform.edtC_备注)
thisform.Refresh
ENDWITH
日期和客户没有关联表
本人初学者,各位谢谢了
问题1,运行后客户可以选择,日期自动添加了,其他都是灰色
问题2,点添加后,出现数据类型不匹配。
问题3,为什么要添加with和endwith
问题4,如何简化这个添加按钮代码
初步看了下(上班忙,没时间仔细研究),问题有仨:
1、INSERT的VALUES子句中应该是“Thisform.控件名.VALUE”,不是你现在的“Thisform.控件名”。因为控件名不能作为值赋予字段。另外,你既然INSERT语句是插在WITH...ENDWITH语句套里的,VALUE子句中“Thisform.控件名.VALUE”应该写成“.控件名.VALUE”这样的形式。但我不知道VFP是不是支持这种写法,我只知道WITH...ENDWITH语句套里可以写“[.WITH控件的下级控件名].属性=属性值”进行控件属性赋值或“[.WITH控件的下级控件名].方法名”来执行某控件的方法程序;
2、应该是延续问题1的。既然你已经在之前把各控件的值都赋给了变量,为什么在INSERT语句中不用这些变量对字段进行赋值呢?
3、CAST()是一个函数,怎么能对一个函数进行赋值呢?当然,你说那个“CAST”是一个表名,但你“CAST(... , ...)”的形式叫VFP如何认为这不是一个函数呢?所以,建议你把表文件名称改一下。对于新手,如果想以后一直编程,养成一个良好的编程习惯是很重要的,好习惯的其中之一就是各种VFP文件的主干名,以及内存变量名、字段变量名、常量名、自定义过程名、自定义函数名不要取与VFP关键字、内部函数、内部变量同名。否则,在程序运行中可能会发生一些莫名其妙的问题。