Access交流中心

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

为什么同样语句有的会报错

研究研究  发表于:2015-10-24 09:21:40  
复制

Private Sub SQL创建数据库和数据表_Click()    '首先引用:microsoft activeX data objects 2.X library 和 microsoft ado ext.2.x for ddl and security"
    Dim mycat As New ADOX.catalog    '定义 ADOX 的 Catalog 对象变量
    Dim mycmd As New ADODB.Command    '定义 Command 对象变量
    Dim mydata As String    '定义数据库名称变量
    Dim mytable As String    '定义数据表名称变量
    Dim sql As String
    mydata = ThisWorkbook.Path & "\学生成绩管理.mdb"  '设置要创建的数据库名称(包括完整路径)
    mytable = "期末成绩"  '设置要创建的数据表名称
    On Error Resume Next
    Kill mydata    '删除已经存在的数据库文件
    On Error GoTo 0
    mycat.Create "provider=microsoft.jet.oledb.4.0;Data source=" & mydata  '创建数据库文件
    Set mycmd.ActiveConnection = mycat.ActiveConnection    '设置数据库连接
    sql = "CREATE TABLE " & mytable & "(学号 text(10),姓名 text(6),性别 text(1),班级 text(10)," & _
          "数学 Single,语文 Single,物理 Single,化学 Single," & "英语 Single,总分 Single)"    '设置创建数据表的 SQL 语句表
    With mycmd
        .CommandText = sql
        .Execute , , adcmdtext   '利用 execute 方法创建数据
    End With
    Set mycat = Nothing    '释放变量
    Set mycmd = Nothing
    MsgBox "创建数据库成功!" & vbCrLf & "数据库文件名为:" & mydata & vbCrLf & "数据表名称为:" & mytable & vbCrLf & "保存位置:" & ThisWorkbook.Path, vbInformation, "创建数据库"

End Sub




Private Sub 利用SQL增加字符段_Click()
    Dim mycat As New ADOX.catalog    '定义 adox 的 catalog 对象变量
    Dim mycmd As New ADODB.Command    '定义 command 对象变量
    Dim mydata As String    '定义数据库名称变量
    Dim mytable As String    '定义数据表名称变量
    Dim sql As String         '设置数据库名称(包括完整路径)
    mydata = ThisWorkbook.Path & "\学生成绩管理.mdb"      '设置要创建的数据表名称
    mytable = "期末成绩"
    mycat.ActiveConnection = "provider=microsoft.jet.oledb.4.0;data source=" & mydata  '建立与数据库的连接
'    mycat.tables.Delete mytable  '删除数据库中已经存在的数据表
    Set mycmd.ActiveConnection = mycat.ActiveConnection    '设置数据库连接
    
   docmd.runsql "ALTER TABLE mytable Add 学费 currency"   '设置创建数据表的 SQL 语句表
          
    With mycmd
        .CommandText = sql
        .Execute , , adcmdtext   '利用 execute 方法创建数据
    End With
    Set mycat = Nothing  '释放变量
    Set mycmd = Nothing   '释放变量
End Sub


Private Sub 利用SQL删除字符段_Click()
    Dim mycat As New ADOX.catalog    '定义 adox 的 catalog 对象变量
    Dim mycmd As New ADODB.Command    '定义 command 对象变量
    Dim mydata As String    '定义数据库名称变量
    Dim mytable As String    '定义数据表名称变量
    Dim sql As String         '设置数据库名称(包括完整路径)
    mydata = ThisWorkbook.Path & "\学生成绩管理.mdb"      '设置要创建的数据表名称
    mytable = "期末成绩"
    mycat.ActiveConnection = "provider=microsoft.jet.oledb.4.0;data source=" & mydata  '建立与数据库的连接
'    mycat.tables.Delete mytable  '删除数据库中已经存在的数据表
    Set mycmd.ActiveConnection = mycat.ActiveConnection    '设置数据库连接
    
   sql = "ALTER TABLE mytable DROP  学号"    '设置创建数据表的 SQL 语句表
          
    With mycmd
        .CommandText = sql
       .Execute , , adcmdtext   '利用 execute 方法创建数据 
    End With
    Set mycat = Nothing  '释放变量
    Set mycmd = Nothing   '释放变量
End Sub

以上3端代码只有第一段通过,后2段代码都在【.Execute , , adcmdtext  】报错



请高手们帮我看看 

 

Top
缪炜 发表于:2015-10-24 10:26:17
   docmd.runsql "ALTER TABLE mytable Add 学费 currency"   这里就已经执行SQL语句 了,最好把示例放上看一下

研究研究 发表于:2015-10-24 12:34:22

没有详细的说明,所以我在瞎猜想





杜超 发表于:2015-10-24 15:43:32
提示什么错误

研究研究 发表于:2015-10-24 17:11:59




就这样提示  我不懂英语  所以网上找到东西后瞎凑一起


谢谢高手指正



研究研究 发表于:2015-10-24 17:23:13

点击下载此附件


除2和3出错  其他都对的


求路过的高手出手帮助 


跪求



金宇 发表于:2015-10-25 21:02:26

增加字段

docmd.runsql "ALTER TABLE 期末成绩 Add sss currency"  '设置创建数据表的 SQL 语句表

改为

 sql = "ALTER TABLE 期末成绩 Add column sss currency"


删除字段

sql = "ALTER TABLE mycmd DROP 学号"    '设置创建数据表的 SQL 语句表

改为

sql = "ALTER TABLE 期末成绩 DROP column 学号"    '设置创建数据表的 SQL 语句表



研究研究 发表于:2015-10-26 18:59:53
谢谢  金宇 老师  成功了  

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