主题:求:用VFP命令,建立SQL中的表及结构
天地之间
[专家分:0] 发布于 2010-12-15 14:08:00
求高手指点:用VFP已经连通SQL,但不知道如何用VFP命令直接建立SQL中的表(表名)与表中的一些结构列(列名与数据属性),谢谢
回复列表 (共7个回复)
沙发
菜鸭 [专家分:5120] 发布于 2010-12-17 08:53:00
既然可连接sqlserver
还是用sqlserver客户端(如查询管理器,或osql,isql等)直接操作简单
板凳
agt澳 [专家分:840] 发布于 2010-12-17 10:26:00
你有兴趣可以看看:主题:[讨论]看看是否还有人对vfp+sql2000的c/s系统有兴趣
...通过vfp命令创建SQL库存数据库及相关数据表2
*!* 创建库存数据库名称:stock
*!* 数据库初始大小;文件大小自动增长,增长限制为为默认
*!* 数据库日志文件大小;文件大小自动增长,增长限制为默认
SQLEXEC(nConnHandle,"CREATE DATABASE stock;
ON PRIMARY ;
( NAME = stock _db_file,;
FILENAME = ' D:\database \ stock _db.mdf');
LOG ON ;
( NAME = stock _db_log_file,;
FILENAME = ' D:\database \ stock _db_log.ldf')")
?SQLEXEC(nConnHandle,"USE STOCK")
*!* 在库存数据库 STOCK 中建立以下数据表
*!*TABLE 材料类别
*!* 在库存数据库中建立以下数据表
*!*TABLE 材料类别
?SQLEXEC(nConnHandle,"CREATE TABLE 材料类别;
(类别ID VARCHAR(20) PRIMARY KEY NOT NULL,;
材料类别 varchar(50))")
SQLEXEC(nConnHandle,"sp_help 材料类别")
*!*table 库存
CSQL="CREATE TABLE [dbo].[库存]"
CSQL=CSQL+"([存货代码] [varchar] (20) PRIMARY KEY NOT NULL,;
[存货名称] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL,;
[类别id] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL,"
CSQL=CSQL+"[规格] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL,;
[单位] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL,;
[货架] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL,"
CSQL=CSQL+"[数量] [float] NULL,;
[最高库存] [float] NULL,;
[最底库存] [float] NULL)"
?SQLEXEC(nConnHandle,csql)
SQLEXEC(nConnHandle,"sp_help 库存")
*!*table 供应商
SQLEXEC(nConnHandle,"create table 供应商;
(供应商ID varchar(20) PRIMARY KEY not null,;
供应商 varchar(50),;
联系电话 varchar(50))")
SQLEXEC(nConnHandle,"SP_HELP 供应商")
*!*table 入库表
SQLEXEC(nConnHandle,"create table 入库表;
(入库单号 varchar(20) PRIMARY KEY not null,;
总金额 float,;
入库日期 datetime,;
经手人 varchar(20),;
是否审核 bit,;
摘要 varchar(100))")
SQLEXEC(nConnHandle,"SP_HELP 入库表")
*!*table 入库材料明细表
CSQL="create table 入库材料明细表"
CSQL=CSQL+"(入库单号 varchar(20) foreign key references 入库表(入库单号) not null,;
存货代码 varchar(20) foreign key references 库存(存货代码) not null,;
供应商ID varchar(20) foreign key references 供应商(供应商ID) not null,"
CSQL=CSQL+"单价 float,单位 varchar(20),商量 float,金额 float,摘要 varchar(100),"
CSQL=CSQL+"CONSTRAINT PK_明细表 PRIMARY KEY (入库单号,存货代码,供应商ID))"
?SQLEXEC(nConnHandle,csql)
SQLEXEC(nConnHandle,"SP_HELP 入库材料明细表")
=SQLDISCONNECT(nConnHandle)
ELSE
MESSAGEBOX("连接失败"+chr(13)+chr(13)+;
' 要求四个字符型参数,'+chr(13)+chr(13)+;
'现参数名称、类型如下: '+chr(13)+chr(13)+;
'1.DSN: '+varTYPE(pszDSN)+chr(13)+chr(13)+;
'2.Database: '+varTYPE(cDatabase)+chr(13)+chr(13)+;
'3.Server: '+varTYPE(cServer)+chr(13)+chr(13)+;
'4.SaCode: '+varTYPE(cSaCode)+chr(13)+chr(13)+;
'请重新执行,并附准确的四个字符型参数。',0+64,"提示")
retu
ENDIF
ELSE
MESSAGEBOX(""+chr(13)+chr(13)+;
' 要求四个字符型参数,'+chr(13)+chr(13)+;
'现参数名称、类型如下: '+chr(13)+chr(13)+;
'1.DSN: '+varTYPE(pszDSN)+chr(13)+chr(13)+;
'2.Database: '+varTYPE(cDatabase)+chr(13)+chr(13)+;
'3.Server: '+varTYPE(cServer)+chr(13)+chr(13)+;
'4.SaCode: '+varTYPE(cSaCode)+chr(13)+chr(13)+;
'请重新执行,并附准确的四个字符型参数。',0+64,"提示")
retu
ENDIF
3 楼
天地之间 [专家分:0] 发布于 2010-12-17 15:10:00
谢谢二位,我试试
4 楼
天地之间 [专家分:0] 发布于 2010-12-17 19:48:00
谢谢,可以了!
5 楼
天地之间 [专家分:0] 发布于 2010-12-22 17:35:00
谢谢你,不过你给我的命令:=SQLEXEC(nhandle,"CREATE TABLE ******)")中的添加项目,最多只能是14项,多了一项,VF就不能保存了,提示说“命令中含有不能识别的短语或关键字”》能帮我解答吗?
6 楼
天地之间 [专家分:0] 发布于 2010-12-23 09:59:00
我试过,最后发现所建项是文本型(char或nvarchar)超13项,就出现上述情况,有那位高手请教下。
7 楼
agt澳 [专家分:840] 发布于 2010-12-23 19:04:00
估计是一行太长引起,
所以看看下面的命令:将一条命令分几行写
*!*table 入库材料明细表
CSQL="create table 入库材料明细表"
CSQL=CSQL+"(入库单号 varchar(20) foreign key references 入库表(入库单号) not null,;
存货代码 varchar(20) foreign key references 库存(存货代码) not null,;
供应商ID varchar(20) foreign key references 供应商(供应商ID) not null,"
CSQL=CSQL+"单价 float,单位 varchar(20),商量 float,金额 float,摘要 varchar(100),"
CSQL=CSQL+"CONSTRAINT PK_明细表 PRIMARY KEY (入库单号,存货代码,供应商ID))"
?SQLEXEC(nConnHandle,csql)ihan
SQLEXEC(nConnHandle,"SP_HELP 入库材料明细表")
我来回复