您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> VFP >> 辅导 >> 正文    
  从SQLServer向VFP拷贝表 【注册男护士专用博客】          

从SQLServer向VFP拷贝表

www.nanhushi.com     佚名   不详 

  在数据库操作中,有时需要把SQL Server中的表拷贝到VFP表中。下面介绍通过编程,先生成与SQL Server表一致的VFP表结构,然后把数据从SQL Server表中拷贝到VFP表中。
  要从SQL Server表向VFP表拷贝数据,可以利用 SQLEXEC(),SQLTABLES()以及
  ⑴从SQL表中取得表的结构信息;
  ⑵生成与SQL表结构相同的VFP表;
  ⑶从SQL向VFP表拷贝数据。
  示例代码如下:
  * 因为SQL Server 表可能包含长字段名,而VFP的自由表不支持长字段名,只有数据库中的表才能使用长字段名。为了保存SQL Server表中的长字段名,需要先建立一个数据库CREATE DATABASE SQLDATA
  * 建立一个包含表的信息的 cursor
  CREATE CURSOR SYS_Tables (Table_Name c(128), Field_Name c(120), ;
  Field_Type c(1), Field_len N(3,0), Field_Dec N(3,0))
  * 建立一个连接到 SQL Server 服务器的连接字符串
  * 使用时请用正确的服务器名称代替下面文字中的对应项
  Connect_String=′DRIVER={SQL Server};Server=MY_Server;′+ ;
  ′DATABASE=PUBS;UID=sa;PWD=′
  * 连接 SQL Server 服务器
  gnConnHandle=SQLSTRINGCONNECT(Connect_String)
  IF gnConnHandle〉0
  *发送 USE 命令,打开 PUBS 数据库
  SQLCOMMAND="USE PUBS"
  =sqlexec(gnConnHandle,SQLCOMMAND)
  * 取得 SQL Server 中可以使用的表的数量
  SQLConnTables=SQLTABLES(gnConnHandle)
  IF SQLConnTables〉0
  SELECT SQLResult
  * 只操作表,所以SQL的条件子句中表类型 table_type参数设置为TABLE
  * 否则取得系统表和视图
  SELECT Table_Name FROM SQLResult ;
  WHERE UPPER(ALLTRIM(Table_Type))="TABLE" ;

  INTO CURSOR SQL_Tables
  SELECT SQL_Tables
  INCnt=0
  DO WHILE !EOF()
  * 生成一个执行存贮过程的命令字符串
  SQLCOMMAND="SELECT * FROM " + ALLTRIM(Table_Name)
  * 执行存储过程,取得数据放到临时 cursor
  =sqlexec(gnConnHandle,SQLCOMMAND,′tmp_sys_data′)
  * 选择包含数据的 cursor
  SELECT tmp_sys_data
  * 使用 DBF()函数取得临时文件的实际名称
  this_file=DBF()
  * 用 AFIELDS() 函数取得字段名和字段属性
  =AFIELDS(test_vals)
  * 字段数据保存到数组 maketab 中
  DIMENSION maketab[alen(test_vals,1),6]
  * 用字段数据填充数组元素
  FOR i=1 TO ALEN(test_vals,1)
  maketab[i,1]=test_vals[i,1]
  maketab[i,2]=test_vals[i,2]
  maketab[i,3]=test_vals[i,3]
  maketab[i,4]=test_vals[i,4]
  maketab[i,5]=test_vals[i,5]
  maketab[i,6]=test_vals[i,6]
  NEXT
  * 根据数组 maketab 建立表,先建立命令字符串,然后用宏替换执行
  Execute_Cmd="CREATE TABLE "+ALLTRIM(SQL_Tables.Table_Name)+ ;
  " FROM ARRAY maketab"
  &Execute_Cmd
  * 选中新建立的表
  current_table=ALLTRIM(SQL_Tables.Table_Name)
  SELECT (current_table)
  * 从临时文件中填加数据
  APPEND FROM &this_file
  SELECT SQL_Tables
  SKIP
  ENDDO
  =SQLDISCONN(gnConnHandle)
  ENDIF
  ENDIF
  SELECT SQL_Tables
  CLOSE ALL
  USE AUTHORS
  BROWSE TIMEOUT 15
  CLOSE ALL
  RETURN
  上面的代码执行后会生成一个名为Sqldata.dbc 的VFP数据库,库中包含的表是SQL

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。