回 帖 发 新 帖 刷新版面

主题:求:用VFP命令,建立SQL中的表及结构

求高手指点:用VFP已经连通SQL,但不知道如何用VFP命令直接建立SQL中的表(表名)与表中的一些结构列(列名与数据属性),谢谢

回复列表 (共7个回复)

沙发

既然可连接sqlserver

还是用sqlserver客户端(如查询管理器,或osql,isql等)直接操作简单

板凳

你有兴趣可以看看:主题:[讨论]看看是否还有人对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 楼

谢谢二位,我试试

4 楼

谢谢,可以了!

5 楼

谢谢你,不过你给我的命令:=SQLEXEC(nhandle,"CREATE TABLE ******)")中的添加项目,最多只能是14项,多了一项,VF就不能保存了,提示说“命令中含有不能识别的短语或关键字”》能帮我解答吗?

6 楼

我试过,最后发现所建项是文本型(char或nvarchar)超13项,就出现上述情况,有那位高手请教下。

7 楼

估计是一行太长引起,
所以看看下面的命令:将一条命令分几行写
  *!*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 入库材料明细表")
        

我来回复

您尚未登录,请登录后再回复。点此登录或注册