Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]WHERE附近有语法错误

李制樯  发表于:2014-05-29 23:22:48  
复制

Delete From [基础信息] Where 员工编号 in (Select 员工编号 From OpenRowSet('Microsoft.ACE.OLEDB.12.0','Excel 12.0;HDR=Yes;IMEX=1;Database=C:\Users\Administrator\Desktop\新的工资管理系统.xlsm',[基础信息$A3:J40] Where Not 员工编号 Is Null)

 

 

Top
李制樯 发表于:2014-05-29 23:28:02

excel2010+sql2008  运行环境

 Delete From [基础信息] Where 员工编号 in (Select 员工编号 From OpenRowSet('Microsoft.Jet.OLEDB.4.0','Excel 12.0;HDR=Yes;IMEX=1;Database=C:\Users\Administrator\Desktop\新的工资管理系统.xlsm',[基础信息$A3:J40]) Where  员工编号 Is Not Null)

 



李制樯 发表于:2014-05-29 23:55:50

 



李制樯 发表于:2014-05-31 00:29:41
excel导入sql的用以下语法
INSERT INTO gx2
SELECT bianhao, kuanhao, xuhao, bjmc, gc, gdjs, wcjs, js
FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0',
      'Data Source=D:\sqloledb方法插入SQL.xls;Extended properties=Excel 8.0' )...[sheet1$]

注意 1 不支持[sheet1$A2:H14] 这种表达式
     2 不能用select  * 代替  SELECT  bianhao, kuanhao, xuhao, bjmc, gc, gdjs, wcjs, js
          除非 gx2表 中字段是按照字母排序的 bianhao 在第一列 ,bjmc在第二列 ..................... xuhao在最后一列
     3 最好用 CNN.Execute strSQL 代替 RST.Open strSQL, CNN, 3, 3

煮江品茶 发表于:2015-05-03 16:45:30

1、不应写为[sheet1$A2:H14],而应写为[sheet1$].[A2:H14]这样才能表示某个Range的引用。即使在Excel中,Sheet与Range之间也需要!号或.号引用。

2、没注意Select字段排列顺序会按字母递增,至少对汉字没出现这个现象。



李制樯 发表于:2015-05-03 19:00:36

版老师:   

上面的语句,在EXCEL中操纵ACCESS能通过,但是我把连接字符串更改为SQL SERVER,却不能通过了,这个问题困扰好久了.

 

EXCEL操纵ACCESS原语句:

√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√

'保存和更新基础信息
Sub 保存基础信息()
    Dim AdoConn As New ADODB.Connection
    Dim strConn As String
    Dim DataAddr As String
    Dim strSQL As String
    '设置连接字符串
    strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                "Data Source=" & ThisWorkbook.Path & Application.PathSeparator & _
                "工资管理系统数据库.accdb;"
    '获取基本信息数据区域地址
    DataAddr = Sheets("基础信息").Range("A3:J" & Sheets("基础信息").Range("A" & Cells.Rows.Count).End(xlUp).Row).Address(0, 0)
    '打开连接
    AdoConn.Open strConn
    '删除数据库中的原有记录
    strSQL = "Delete * From [基础信息] Where 员工编号 in (Select 员工编号 From" & _
             "[Excel 12.0;HDR=YES;DATABASE=" & ThisWorkbook.FullName & "].[基础信息$" & _
             DataAddr & "] Where Not 员工编号 Is Null)"
    '执行SQL语句
    AdoConn.Execute strSQL
    '设置SQL上传语句
    strSQL = "Insert Into [基础信息] Select * From [Excel 12.0;HDR=YES;DATABASE=" & _
            ThisWorkbook.FullName & "].[基础信息$" & DataAddr & "] Where Not 员工编号 Is Null"
    '执行上传语句
    AdoConn.Execute strSQL
    '将保存完毕的基础信息表再次导入到工作表中以更新信息
    strSQL = "Select 员工编号,姓名,部门,身份证号码,基本工资,养老保险,医疗保险,失业保险,公积金,在职状态 From [基础信息] Order By 部门"
    Sheets("基础信息").Range("A4").CopyFromRecordset AdoConn.Execute(strSQL)
    '关闭数据库连接
    AdoConn.Close
    '提示信息
    MsgBox "保存完毕"
End Sub
√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√

 

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

但是更改SQL SERVER字符串,更改相关SQL语句,不能通过,提示WHERE附近有语法错误

 strConn = "Provider=SQLOLEDB;" & _
              "Data Source=172.16.216.1;" & _
              "Initial Catalog=sql2;" & _
              "User id=SA;" & _
              "Password=123456;"

 

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 



总记录:5篇  页次:1/1 9 1 :