找回密码
 加入
搜索
查看: 3104|回复: 12

[系统综合] 求教两个关于ACCESS数据库的基础问题?

  [复制链接]
发表于 2016-3-10 17:43:47 | 显示全部楼层 |阅读模式
本帖最后由 gzh888666 于 2016-3-10 17:45 编辑

麻烦大神们了,目前问题有两个。
1.如何在ACCESS数据表中在已有项的基础上添加或插入一个新的项?
2.如何让自动标号ID COUNTER(1,1) primary key的项值删除后能够按照步进自动重新编号?
搜索了论坛没有找到答案,求助大神能够帮助!
发表于 2016-3-10 17:54:47 | 显示全部楼层
回复 1# gzh888666

這都是SQL 的問題吧
发表于 2016-3-10 18:02:05 | 显示全部楼层
回复 1# gzh888666


    ALTER TABLE 表格名稱 ALTER COLUMN 自動編號 COUNTER (1, 1)

改一下自己的表格名稱和自動編號的名稱,最後再執行它,就完成了,試試吧!!^^
发表于 2016-3-10 18:12:16 | 显示全部楼层
回复 1# gzh888666
按照步进自动编号:
id identity(1, 1) primary key
 楼主| 发表于 2016-3-11 15:13:14 | 显示全部楼层
回复 3# kk_lee69
能给我一段代码吗?
        ALTER TABLE " & $tblname & " ADD ID ALTER COLUMN(1, 1) primary key
这样是无法写入!~
 楼主| 发表于 2016-3-11 15:13:51 | 显示全部楼层
回复 4# chzj589
能给我一段代码吗?
        ALTER TABLE " & $tblname & " ADD ID ALTER COLUMN(1, 1) primary key
这样是无法写入!~
发表于 2016-3-11 20:08:58 | 显示全部楼层
回复 6# gzh888666
#AutoIt3Wrapper_UseX64 = n
$adSource = @ScriptDir & "\DB1.mdb"
$adTable = "Table2"

If FileExists($adSource) Then
        $addtbl = ObjCreate("ADODB.Connection")
        $addtbl.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $adSource)
        $addtbl.Execute("CREATE TABLE " & $adTable)
        $addtbl.Execute("ALTER TABLE " & $adTable & " ADD id identity(1, 1) primary key,name text(255) ,pass text(255)")
        $addtbl.Close
        MsgBox(64, "提示", "创建表成功", 5)
Else
        MsgBox(64, "错误", "数据库文件不存在", 5)
EndIf
发表于 2016-3-11 20:20:31 | 显示全部楼层
回复 6# gzh888666
#include <Array.au3>
#include <Access.au3>
Global $adSource = 'MyDatabase.mdb'
Global $adTable = "数据库"
Global $DatabasePassword = "admin"
Global $adCol = 'ID identity |第一列 TEXT(255)|第二列 TEXT(255)|第三列 TEXT(255)|第四列 TEXT(255)|第五列 TEXT(255)' ;identity(1, 1) primary key
Global $sFieldNames = "ID|第一列|第二列|第三列|第四列|第五列"
Global $bTF = True
If FileExists($adSource) Then

Else
        If MsgBox(52, '提示!', '未检测到数据库,是否立即创建?') = 6 Then
                _CreateDB($adSource, $DatabasePassword)
                _CreateTable($adSource, $adTable, $adCol, $DatabasePassword)
                MsgBox(0, '提示!', '数据库创建完成')
        EndIf
EndIf
Func _CreateDB($adSource, $DatabasePassword = '');创建数据库
        ;=======================函数说明==========
        ;函数作用:创建 Access数据库
        ;参数说明:
        ;1:$adSource = 数据库*.mdb文件路径、
        ;2:$DatabasePassword = 数据库访问密码(可选)
        ;=========================================

        $oADO = ObjCreate("ADOX.Catalog")
        $oADO.Create("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $adSource & "; Jet OLEDB:Database Password=" & $DatabasePassword)
        $oADO.ActiveConnection.Close
EndFunc   ;==>_CreateDB

Func _CreateTable($adSource, $adTable, $adCol, $DatabasePassword = '');创建表和列
        ;============================函数说明====================================
        ;函数作用:创建 表和列
        ;参数说明:
        ;1:$adSource = 数据库*.mdb文件路径、
        ;2:$adTable = 创建表名称、
        ;3:$adCol = 创建的列,多列以“|”隔开 — 如:第一列|第二列|……
        ;4:$DatabasePassword = 数据库访问密码(可选)
        ;=========================================================================

        $adCol = StringRegExpReplace($adCol, '\|', ',')
        $oADO = ObjCreate("ADODB.Connection")
        $oADO.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $adSource & "; Jet OLEDB:Database Password=" & $DatabasePassword)
        $oADO.Execute("CREATE TABLE " & $adTable)
        $oADO.Close;创建表

        $oADO = ObjCreate("ADODB.Connection")
        $oADO.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $adSource & "; Jet OLEDB:Database Password=" & $DatabasePassword)
        $oADO.Execute("ALTER TABLE " & $adTable & " ADD " & $adCol)
        $oADO.Close;创建列
EndFunc   ;==>_CreateTable
发表于 2016-3-14 18:15:19 | 显示全部楼层
回复 1# gzh888666
1.如何在ACCESS数据表中在已有项的基础上添加或插入一个新的项?
以下代码可添加或插入一个新列字段:
    $adColba = "字段名"
        MsgBox(4096, "创建列", $adColba)
        $adCol = StringRegExpReplace($adColba, '\|', ',')
        $oADO = ObjCreate("ADODB.Connection")
        $oADO.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $adSource & "; Jet OLEDB:Database Password=" & $DatabasePassword)
        $oADO.Execute("ALTER TABLE " & $adTable & " ADD " & $adCol)
        $oADO.Close;创建列
        MsgBox(48, "提示", "添加字段成功")

但是添加或插入一个新列字段没多大的用途,因为要添加或修改记录数据不好操作.请问LZ的操作方式?

评分

参与人数 1金钱 +50 贡献 +20 收起 理由
gzh888666 + 50 + 20 谢谢帮助

查看全部评分

 楼主| 发表于 2016-3-15 09:12:00 | 显示全部楼层
回复 9# chzj589

主要是数据入库后有时需要增加项目,以前的数据又不能损坏,所以有这个需要,之前我都是手动在数据库里添加,感谢你们的回答,我测试一下。
发表于 2016-3-15 10:20:45 | 显示全部楼层
回复 10# gzh888666
谢谢奖历!
项目只能是添加,要修改项目,我试了还不能成功。
我想问添加项目后,读取数据库记录数据不能显示在GUICtrlCreateListView,添加与修改窗口控件也不能显示操作,因窗口控件无法随数据库添加项目而添加控件?
 楼主| 发表于 2016-3-16 14:59:40 | 显示全部楼层
回复 11# chzj589
我想问添加项目后,读取数据库记录数据不能显示在GUICtrlCreateListView,添加与修改窗口控件也不能显示操作,因窗口控件无法随数据库添加项目而添加控件?
这里应该是你的GUICtrlCreateListView读取方面的问题和数据库本身无关!
发表于 2016-3-16 19:24:13 | 显示全部楼层
要在GUICtrlCreateListView预留:||
$ListView1 = GUICtrlCreateListView("ID|第一列|第二列|第三列|第四列|第五列|第六列 ||||||", 10, 10, 840, 350, $LVS_REPORT, $WS_EX_CLIENTEDGE);, -1, BitOR($WS_EX_CLIENTEDGE, $LVS_EX_FULLROWSELECT, $LVS_REPORT))
$hListview1 = GUICtrlGetHandle($ListView1)
_GUICtrlListView_SetColumn($ListView1, 0, 'ID', 50, 2)
_GUICtrlListView_SetColumn($ListView1, 1, '第一列', 80, 2)
_GUICtrlListView_SetColumn($ListView1, 2, '第二列', 80, 2)
_GUICtrlListView_SetColumn($ListView1, 3, '第三列', 80, 2)
_GUICtrlListView_SetColumn($ListView1, 4, '第四列', 80, 2)
_GUICtrlListView_SetColumn($ListView1, 5, '第五列', 80, 2)
_GUICtrlListView_SetColumn($ListView1, 6, '第六列', 80, 2)
是这样吗?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-26 10:41 , Processed in 0.092803 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表