CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

用C#讲SQL SERVER数据生成ACCESS,EXCEL的问题,高手请进!

楼主yfx82(仁面寿星)2005-06-20 10:59:36 在 .NET技术 / C# 提问

小弟需要实现将SQL   SERVER数据到入ACCESS,EXCEL的功能,功能基本上完成,但遇到一个棘手的问题。如果要导出的数据有dateTime或者money   ,生成的SQL语句执行抱错,说是字段定义出错,我把dateTime或者money类型强行转成string类型还是一样的错。  
        程序的愿意是讲SQL   SERVER的表提取为DATATABLE然后用OLEDB连接ACCESS,EXCEL,生成建表语句和插入数据语句。  
   
  这是原始的包含DateTime类型的SQL语句:  
  create   table   Register_Patient   (       PatientID   NUMBER,     UserName   STRING,     NickName   STRING,     TrueName   STRING,     PassWord   STRING,     SocialInsuranceCode   STRING,     Sex   NUMBER,     Email   STRING,     Birthday   DATETIME,     CertificateType   STRING,     CertificateCode   STRING,     Mobile   STRING,     Tel   STRING,     Address   STRING,     Zip   STRING,     Province   NUMBER,     City   NUMBER,     Flag   NUMBER,     addTime   DATETIME,     State   NUMBER,     RegIp   STRING,     LastLoginTime   DATETIME,     LoginCount   NUMBER   )  
   
  这是我把DateTime类型强行转换成STRING的语句:  
  create   table   Register_Patient   (       PatientID   NUMBER,     UserName   STRING,     NickName   STRING,     TrueName   STRING,     PassWord   STRING,     SocialInsuranceCode   STRING,     Sex   NUMBER,     Email   STRING,     Birthday   STRING,     CertificateType   STRING,     CertificateCode   STRING,     Mobile   STRING,     Tel   STRING,     Address   STRING,     Zip   STRING,     Province   NUMBER,     City   NUMBER,     Flag   NUMBER,     addTime   STRING,     State   NUMBER,     RegIp   STRING,     LastLoginTime   STRING,     LoginCount   NUMBER   )  
   
  这是不包含DateTime或者Money类型的可以成功执行的SQL语句:  
  create   table   Register_Bureau   (       BureauID   NUMBER,     BureauName   STRING,     BureauLevel   NUMBER,     Introduce   STRING,     Province   NUMBER,     City   NUMBER,     Area   NUMBER,     Address   STRING,     LinkMan   STRING,     Tel   STRING,     State   NUMBER   )"  
   
  请问一下是什么原因造成这种错误,怎样改进了,请赐教,多谢了 问题点数:40、回复次数:7Top

1 楼lampson123(微软)回复于 2005-06-20 11:46:21 得分 30

1.                   将SQL   SERVER表里的数据插入到Access表中    
   
  --   ======================================================    
   
  在SQL   SERVER   里运行:    
   
  insert   into   OpenDataSource(   'Microsoft.Jet.OLEDB.4.0',    
   
      'Data   Source="   c:\DB.mdb";User   ID=Admin;Password='',ACCESS表名   )  
   
  (列名1,列名2)    
   
  select   列名1,列名2     from     sql表    
   
       
   
  实例:    
   
  insert   into     OPENROWSET('Microsoft.Jet.OLEDB.4.0',    
   
        'C:\db.mdb';'admin';'',   Test)    
   
  select   id,name   from   Test    
   
  INSERT   INTO   OPENROWSET('Microsoft.Jet.OLEDB.4.0',   'c:\trade.mdb';   'admin';   '',   表名)    
   
  SELECT   *    
   
  FROM   sqltablename    
   
   
  2、将SQL   SERVER中查询到的数据导成一个Excel文件    
   
  --   ======================================================    
   
  T-SQL代码:    
   
  EXEC   master..xp_cmdshell   'bcp   库名.dbo.表名out   c:\Temp.xls   -c   -q   -S"servername"   -U"sa"   -P""'    
   
  参数:S   是SQL服务器名;U是用户;P是密码    
   
  说明:还可以导出文本文件等多种格式    
   
       
   
  实例:EXEC   master..xp_cmdshell   'bcp   saletesttmp.dbo.CusAccount   out   c:\temp1.xls   -c   -q   -S"pmserver"   -U"sa"   -P"sa"'    
   
       
   
    EXEC   master..xp_cmdshell   'bcp   "SELECT   au_fname,   au_lname   FROM   pubs..authors   ORDER   BY   au_lname"   queryout   C:\   authors.xls   -c   -Sservername   -Usa   -Ppassword'    
   
       
   
  在VB6中应用ADO导出EXCEL文件代码:    
   
  Dim   cn     As   New   ADODB.Connection    
   
  cn.open   "Driver={SQL   Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"    
   
  cn.execute   "master..xp_cmdshell   'bcp   "SELECT   col1,   col2   FROM   库名.dbo.表名"   queryout   E:\DT.xls   -c   -Sservername   -Usa   -Ppassword'"    
   
   
   
  3、在SQL   SERVER里往Excel插入数据:    
   
  --   ======================================================    
   
  insert   into   OpenDataSource(   'Microsoft.Jet.OLEDB.4.0',    
   
  'Data   Source="c:\Temp.xls";User   ID=Admin;Password=;Extended   properties=Excel   5.0')...table1   (A1,A2,A3)   values   (1,2,3)    
   
       
   
  T-SQL代码:    
   
  INSERT   INTO      
   
    OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',      
   
    'Extended   Properties=Excel   8.0;Data   source=C:\training\inventur.xls')...[Filiale1$]      
   
    (bestand,   produkt)   VALUES   (20,   'Test')      
   
  Top

2 楼yfx82(仁面寿星)回复于 2005-06-20 15:54:20 得分 0

这个方法有朋友跟我提到,但是我想弄清楚为什么,我那样做不行?Top

3 楼yfx82(仁面寿星)回复于 2005-06-21 08:49:10 得分 0

自己顶一下Top

4 楼ghchen()回复于 2005-06-21 09:31:42 得分 0

在Access数据库中用Date来代替DateTime   ,Currency来代替money试试Top

5 楼cbw1230(柏雯)回复于 2005-06-21 10:12:48 得分 0

回复:lampson123(微软)    
  我试过了,可以成功的SQL表导出到Excel文件里。遗憾的是没有把表的字段名称也导出到Excel文件中去。Top

6 楼yfx82(仁面寿星)回复于 2005-06-21 15:13:02 得分 0

还有别的好方法吗?Top

7 楼cxb_hy(一时的冲动)回复于 2005-06-21 15:25:23 得分 10

方法是有的,直接调用SQL的数据转换服务(COM),这不就完事儿了吗?详细调用方法请楼主自己看SQL   Server的帮助.Top

相关问题

  • 关于DataGrid 生成excel(C#)
  • 纯c++怎么生成excel文件?
  • ASP.Net中如何用生成Excel文件?(C#版)
  • 高分求asp.net+c#+sql生成rss2.0代码
  • 如何在C#代码中生成SQL存储过程
  • 在C#开发的ASP。NET环境下如果生成Word,和Excel文件?
  • 将sql server2000的数据表生成excel文件时,出现字符变化
  • 用Rose2000生成C++代码...
  • 怎样用C#生成word?
  • 如何用C#生成uuid

关键词

  • 语句
  • 数据
  • excel
  • access
  • sql
  • server
  • 生成
  • datetime
  • number
  • 类型

得分解答快速导航

  • 帖主:yfx82
  • lampson123
  • cxb_hy

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo