TC官方合作论坛

 找回密码
 立即注册
查看: 1574|回复: 2

[其他] 求教TC连接ACCESS

[复制链接]
发表于 2018-5-28 17:07:53 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
TC想连接ACCESS数据,谁能给个代码呀,最好是比较齐全的
回复

使用道具 举报

 楼主| 发表于 2018-5-28 17:09:25 | 显示全部楼层
我自己使用的是TC7.0,office使用的是2016版的
回复 支持 反对

使用道具 举报

发表于 2018-6-27 16:05:09 | 显示全部楼层
功能 程序日志(内容,父窗口="")   
    变量 内容T,返回值,len1   
    内容="["&时间时(当前时间())&":"&时间分(当前时间())&":"&时间秒(当前时间())&"] "&内容
    内容T=编辑框获取文本("编辑框日志",父窗口)   
    len1=字符串分割(内容T,"\r\n",返回值)
    如果(len1>100)
        内容T=字符串移除(内容T,字符串查找(内容T,"\r\n")+2,真)
    结束
    内容T=内容T&"\r\n "&内容
    编辑框设置文本("编辑框日志",内容T,父窗口)
    窗口发送消息(控件获取句柄("编辑框日志",父窗口),#115,7,0)
结束

功能 按钮2_点击()
    变量 c**tr,sql ,line ,ret_array, err,ret
    c**tr =  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&系统获取进程路径()&"Database.mdb;Jet OLEDB:Database Password="
    sql = "CREATE DATABASE 231"
    创建数据库(c**tr)
    调试输出("创建数据库文件,不存在自动创建")
    程序日志("创建数据库文件,不存在自动创建")
   
    ret=创建数据表(c**tr,"创建","姓名 VARCHAR(100) ,年龄 VARCHAR(100) ,性别 VARCHAR(100) ")
    调试输出("创建数据表,也可以添加相应的字段名,不存在则创建成功返回0,存在则创建失败返回-1")
    程序日志("创建数据表,也可以添加相应的字段名,不存在则创建成功返回0,存在则创建失败返回-1")
   
    ret=添加字段名(c**tr,"创建","联系 varchar(255),姓名 VARCHAR(100) ,性别1 VARCHAR(100) ")
    调试输出("添加字段名,不存在则创建成功返回0,存在则创建失败返回-1")
    程序日志("添加字段名,不存在则创建成功返回0,存在则创建失败返回-1")
   
    ret=数据库内容插入(c**tr,"创建","姓名,年龄,性别","'杨幂','30','男'|'刘德华','65','男'|'刘德华','','男'")
    调试输出("数据库内容插入,不存在则创建成功返回0,存在则创建失败返回-1")
    程序日志("数据库内容插入,不存在则创建成功返回0,存在则创建失败返回-1")
   
    ret=数据库内容修改(c**tr,"创建","姓名,年龄,性别","'周杰伦','38','男'"," id=39")
    调试输出("数据库内容修改,不存在则创建成功返回0,存在则创建失败返回-1")
    程序日志("数据库内容修改,不存在则创建成功返回0,存在则创建失败返回-1")
   
    ret=列出字段名(c**tr,"创建")//返回数据库中存在的字段名 数组方式  失败返回的是 数组名[0]=null
    调试输出(ret)
    程序日志(ret)
   
    sql = "SELECT * FROM 创建 WHERE 性别='男'"
    //查询数据
    ret = 数据库(c**tr,sql,line,ret_array,err)
    if(isarray(ret_array))
        变量 value,key,str
        变量 onelen = arraysize(ret_array)
        变量 twolen = arraysize(ret_array[0])
        for(变量 i = 0; i < onelen; i++)
            for(变量 j = 0; j < twolen; j++)
                arraygetat(ret_array[i],j,value,key)
                str = str & key & " : "&value&" , "
            end
            str = str &"\n"
        end
        messagebox(str) //打印查询到的信息
    end   
结束

//access数据库  前提需要先自己建立好数据库文件
功能 创建数据库(数据库连接字串)
    变量 OfficeAc=com("ADOX.catalog")
    OfficeAc.Create(数据库连接字串)
    OfficeAc=null
结束
功能 创建数据表(数据库连接字串,表名,字段名="")
    变量 creatret,creatsql,creatline,creatret_array,createrr
    如果(字段名!="")
        creatsql = "CREATE TABLE "&表名&"(ID int not null identity primary key,"&字段名&")"
    否则
        creatsql = "CREATE TABLE "&表名&"(ID int not null identity primary key)"
    结束
    creatret = 数据库(数据库连接字串,creatsql,creatline,creatret_array,createrr)
    返回 creatret
结束
功能 添加字段名(数据库连接字串,表名,字段名)
    变量 addret,addlen1,add返回字段名,addsql,addline,addret_array,adderr,add返回结果="以下字段名未添加成功,可能已存在或者非法字符\r\n"
    addlen1=字符串分割(字段名,",",add返回字段名)
    遍历(变量 addi = 0; addi < addlen1; addi++)
        addsql="ALTER TABLE "&表名&" ADD "&add返回字段名[addi]
        addret=数据库(数据库连接字串,addsql,addline,addret_array,adderr)
        如果(addret!=0)
            add返回结果=add返回结果&"|"&add返回字段名[addi]
        结束
    结束
    返回 add返回结果
结束
功能 列出字段名(数据库连接字串,表名)
    变量 sqlret,sqllen1,sqllen2,sqlsql,sqlline,sqlret_array,sqlerr,sql返回结果=数组()
    sqlsql="select * from "&表名
    sqlret=数据库(数据库连接字串,sqlsql,sqlline,sqlret_array,sqlerr)   
    如果(sqlerr==""||sqlerr=="执行成功")
        sqllen1=数组大小(sqlret_array)        
        如果(sqllen1>0)
            sqllen2=数组大小(sqlret_array[0])
            遍历(变量 i=0;i<sqllen2;i++)
                //4.0,sql返回结果[i]=sqlret_array[0][i]
                数组获取元素(sqlret_array[0],i,0,sql返回结果[i])
            结束
        否则
            sql返回结果[0]=""
        结束
    否则
        sql返回结果[0]=""
    结束
    返回 sql返回结果
结束
功能 数据库内容插入(数据库连接字串,表名,字段名,内容)
    //字段名格式  字段名1,字段名2,字段名3  
    //内容中  数字的不需要加 '    varchar,char类型的必须要在两边加上 ' 这个符号  格式同字段名
    变量 sqlret,sqllen1,sql返回内容,sqlsql,sqlline,sqlret_array,sqlerr,sql返回结果="以下内容未添加成功,请重试\r\n"
    sqllen1=字符串分割(内容,"|",sql返回内容)
    遍历(变量 sqli = 0; sqli < sqllen1; sqli++)
        sqlsql = "INSERT INTO "&表名&"("&字段名&") VALUES ("&sql返回内容[sqli]&")"
        sqlret=数据库(数据库连接字串,sqlsql,sqlline,sqlret_array,sqlerr)
        如果(sqlret!=0)
            sql返回结果=sql返回结果&"|"&sql返回内容[sqli]
        结束
    结束
    返回 sql返回结果
结束
功能 数据库内容修改(数据库连接字串,表名,字段名,内容,条件控制)
    //条件控制  可以用多个条件  or(或者)  and(并且)   id=20 or 姓名='刘德华'
    变量 sqlret,sqllen1,sqllen2,sql返回内容,sql返回字段名,sqlsql,sqlline,sqlret_array,sqlerr,sql修改内容
    sqllen1=字符串分割(内容,",",sql返回内容)
    sqllen2=字符串分割(字段名,",",sql返回字段名)
    遍历(变量 sqli = 0; sqli < sqllen1; sqli++)
        sql修改内容=sql修改内容&" "&sql返回字段名[sqli]&" = "&sql返回内容[sqli]&","
    结束
    sql修改内容=字符串移除(sql修改内容,1,假)
    sqlsql = "update "&表名&" set "&sql修改内容&" where "&条件控制
    sqlret=数据库(数据库连接字串,sqlsql,sqlline,sqlret_array,sqlerr)
    返回 sqlret
结束
功能 数据库内容删除(数据库连接字串,表名,条件控制)   
    变量 sqlret,sqlsql,sqlline,sqlret_array,sqlerr
    //条件控制  可以用多个条件  or  and
    sqlsql = "delete from "&表名&" where "&条件控制
    sqlret=数据库(数据库连接字串,sqlsql,sqlline,sqlret_array,sqlerr)
    返回 sqlret   
结束
功能 数据库内容读取(数据库连接字串,表名,字段名,&返回内容,&返回影响行数,&返回错误信息)
    //字段名格式  字段名1,字段名2,字段名3  
    //内容中  数字的不需要加 '    varchar,char类型的必须要在两边加上 ' 这个符号  格式同字段名
    //如果需要唯一的值则需要在哪一个字段名字前面加上 " DISTINCT "  如果需要排序  则在sql语句后加上  ORDER BY 你想要排序的字段 (加上 DESC 降序排列)  
    //注意之间的空格
    //    直接用 数据库()  函数即可  这里仅仅说明  可以自行添加扩展
    var c**tr,line,ret_array,err
    var sql = "SELECT * FROM 创建 WHERE 性别='男'"
    //查询数据
    var ret = 数据库(c**tr,sql,line,ret_array,err)
    if(isarray(ret_array))
        变量 value,key,str
        变量 onelen = arraysize(ret_array)
        变量 twolen = arraysize(ret_array[0])
        for(变量 i = 0; i < onelen; i++)
            for(变量 j = 0; j < twolen; j++)
                arraygetat(ret_array[i],j,value,key)
                str = str & key & " : "&value&" , "
            end
            str = str &"\n"
        end
        messagebox(str) //打印查询到的信息
    end   
结束







回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-12 18:09 , Processed in 0.034547 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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