全球FlexSim系统仿真中文论坛

搜索
查看: 8960|回复: 9
打印 上一主题 下一主题

使用ODBC连接Access数据库

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2017-5-24 09:34:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zorsite 于 2017-5-24 09:42 编辑
$ d" z9 W7 t' @* ]' T! L$ D
) G5 F: D5 ~- ^" v: J[size=14.6667px]用户手册的Tutorial中有一篇是讲SQL的,不过它使用的是MySQL。[size=14.6667px]# h; G. @* A& h7 i) h( I
" q* s& L1 i( V. P. M
[size=14.6667px]现在我把这篇教程转为使用Access数据库。' _7 L4 N5 l+ q
+ Y) p( w! a! y' Q4 s2 |/ w9 `
[size=14.6667px]模型背景如下:
3 g" ]0 I* P! n! q  B- h+ D[size=14.6667px]发生器产生4种临时实体,进入4台处理器进行加工。每种临时实体在不同的处理器中加工时间不一样。6 d, m: q8 L3 ~: G" E2 P, G1 X4 U
[size=14.6667px]
' E* J# I( h# t6 k: s

8 }& V9 ^  p- v6 p. Q[size=14.6667px]我们可以通过建立一张全局表进行加工时间的定义,也可以使用外部数据库。8 K! P( X1 X) S/ K6 i6 v" @5 g( o* G
[size=14.6667px]首先你得有一个数据库。使用ACCESS创建一个新的数据库,命名为flexsimdata。创建一张数据表,表名为processtimes,添加4个字段proc1、[size=14.6667px]proc2、[size=14.6667px]proc3、[size=14.6667px]proc4。, J. e5 h. z- V
6 A. p) M/ w3 y  i

: {- w0 _8 v- w/ X; _9 k& t5 H9 z[size=14.6667px]: |7 @8 T6 F" v# h  v# t

7 Q( C6 E3 [8 b/ q[size=14.6667px]数据库建好了,能用Flexsim直接访问吗?答案是不能。应用程序想要访问某种数据库,必须针对此数据库软件编写相应的“驱动程序”。市面上数据库软件那么多,难道Flexsim公司要一一去编写驱动吗?显然不现实。而这个工作微软件已经完成了。
: n4 O  P4 O0 _$ q8 _[size=14.6667px]微软在操作系统中内置了一个叫做ODBC(Open Database Connectivity[size=14.6667px]开放数据库连接)的组件,这个组件可以和不同的数据库软件连接。[size=14.6667px]开放数据库互连(ODBC)是微软提出的数据库访问接口标准,其定义了访问数据库API的一个规范,这些API独立于不同厂商的DBMS,也独立于具体的编程语言。ODBC规范后来被X/OPEN和ISO/IEC采纳,作为SQL标准的一部分。也就是说,只要是遵循SQL标准的数据库软件,都可以和ODBC连接,并通过ODBC进行管理。这样一来,类似[size=14.6667px]Flexsim这样的软件要做的就是和ODBC这个中间件对接就好了,再由ODBC对不同的数据库进行连接。9 X$ i, F1 s- ?( l- ^8 K
[size=14.6667px]现在,我们在ODBC中为刚建立的ACCESS数据库建立一个连接。
" R; s3 \5 i5 y: U9 x[size=14.6667px]ODBC在控制面板--管理工具中可以找到。如果是64位ACCESS,参见[size=14.6667px]http://flexsimasia.com/viewthread.php?tid=6202&page=1&fromuid=610#pid19984。. p3 T4 d7 c* e: Q, t& D- D
[size=14.6667px]
: `5 e& i6 m5 o5 _

# B  R& E) [9 E8 b5 x0 a% q[size=14.6667px]
9 c3 {3 n1 o. a: N" R" [* ^
. J, Y3 o0 ~2 X" X" S0 Q' Y5 H) u# R
[size=14.6667px]数据源名可以和数据库同名,也可以不同名。Flexsim在同数据库进行连接时,需要使用在ODBC中设置的这个“数据源名”,而不再使用数据库的名字。[size=14.6667px]创建好数据库连接之后,可以在flexsim中使用dbopen命令打开该数据库。2 d5 ^0 M6 T. @5 h7 L  f
[size=14.6667px]在处理器的“加工时间”中输入以下代码:( X/ U; E" a% o7 a  L
[size=14.6667px]
  1. /**查询数据库*/
    . p$ x! X6 _! z# ?5 T
  2. string sqlstr="select * from processtimes";' ~8 r, h- X- l. l2 T
  3. dbopen("flexsimdata",sqlstr,0);
    " i% v  {0 X4 Q2 U  x6 @3 j2 o
  4. //dbviewtable;//查看被打开的表
    - u: y! n; j8 t; \) C+ J# i
  5. int row=item.Type;5 b" d2 n# F2 y& p* \; u
  6. int col=ipopno(current,1);
    3 n. g7 G- h; Y" t1 S' o# s: @; Z
  7. double protime=dbgettablenum(row,col);7 v0 j1 F( ]( x6 G3 e# ]
  8. dbclose;$ T8 I  g' x: h% Z
  9. return protime;
复制代码
4 F" Y& d6 Q# `! w7 z4 Z

# W8 |2 r" \3 H/ e; W[size=14.6667px]
: W) a6 g# W& G* _& P  r7 N) ^) Y
1 v$ E2 l# {$ j) i1 m1 T: u
[size=14.6667px]模型是用flexsim 17.1.2完成的,低版本的无法打开。
  j/ x/ l' I( t  ~+ i[size=14.6667px]
2 ~% [2 V. ]' I) q
2#
慧娴亚伦 发表于 2017-5-24 14:23:27 | 只看该作者
感谢加老师分享,补充一点雷区。
# S% h4 A, {: i& e1 U" ?1、FlexSim目前使用odbc只能对应系统版本,也就是说,64位系统装32位软件无法使用odbc;
0 {" {7 I9 L% Z3 g% n! }$ Z2、如果使用的是access数据库,那么不止是系统版本要对应,office的版本也需要对应,也就是说如果要在64位系统用64位FlexSim还要再安装64位office(access),这样才能在odbc中正确的创建FlexSim可以调用的数据源(查看自己电脑office是否64位的可以看下图,在账户|关于XX中可以看到)
: H! q% n9 E+ |6 j7 y  ?! |! Z1 l* V# {" \3 d, W
3、创建数据源的执行程序名字叫做:odbcad32.exe(32位还是64位都是以32结尾),而他们所在的文件夹分别:$ h( n" g, T0 g+ J% U
64位系统:C:\Windows\System32% ]; ]& T% G" I/ r7 d4 l3 J  Z% I
32位系统:C:\Windows\SysWOW645 h- d5 I/ ?1 r
" W) N" r0 n2 E' [+ u+ p
是的。。。我没有写错,64位在32结尾;32位在64结尾(这个锅要微软背)。: m# ~1 F6 [/ P
大家可以用加老师推荐的方法来找,保证正确。
3#
lulu-luka 发表于 2017-5-25 00:37:47 | 只看该作者
前排支持~
4#
fenglin 发表于 2017-5-25 01:44:24 | 只看该作者
5#
我很强壮 发表于 2017-6-8 13:57:00 | 只看该作者
谢加老师
6#
吴庆祺 发表于 2017-7-7 14:38:09 | 只看该作者
鑰佸笀闂笅odbc娌℃湁64浣嶇殑鎬庝箞鍔
7#
慧娴亚伦 发表于 2017-7-7 11:21:49 | 只看该作者
6# 吴庆祺
: ^' F! C5 x0 r- E) F/ s: D
# o8 m) O3 ^9 Z" p+ U4 _9 ], {' c0 y  v- O
回复好像乱码了哟。
9#
shaon007 发表于 2020-5-8 11:26:10 | 只看该作者
666正想了解这一块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|全球FlexSim系统仿真中文论坛 ( 京ICP备14043114号-2 )

GMT+8, 2025-6-30 20:48 , Processed in 0.079406 second(s), 14 queries .

Powered by Discuz! X3.3© 2001-2013 Comsenz Inc.

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