全球FlexSim系统仿真中文论坛

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

使用ODBC连接Access数据库

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2017-5-24 09:34:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 zorsite 于 2017-5-24 09:42 编辑 + i+ }3 X) }! M# r

! }, Z6 u7 _: ~' K% p[size=14.6667px]用户手册的Tutorial中有一篇是讲SQL的,不过它使用的是MySQL。[size=14.6667px]
! I) }$ Q. h- q/ l
, q+ p8 ?7 d. C( g$ J
[size=14.6667px]现在我把这篇教程转为使用Access数据库。# t% m* H. ], T; O6 I( a' e8 [
  i' `: j) E% R& @5 d
[size=14.6667px]模型背景如下:
- L' n$ `9 ~5 u9 l0 X# ][size=14.6667px]发生器产生4种临时实体,进入4台处理器进行加工。每种临时实体在不同的处理器中加工时间不一样。" u$ A8 ~2 b$ F" I4 p0 [
[size=14.6667px]
4 c- C" a; ^$ a. i. p
8 Z3 D0 E0 G" }5 q! ^
[size=14.6667px]我们可以通过建立一张全局表进行加工时间的定义,也可以使用外部数据库。% ?  l  P% T! Q8 y* ^& d9 L$ y" H
[size=14.6667px]首先你得有一个数据库。使用ACCESS创建一个新的数据库,命名为flexsimdata。创建一张数据表,表名为processtimes,添加4个字段proc1、[size=14.6667px]proc2、[size=14.6667px]proc3、[size=14.6667px]proc4。+ {9 l  d# R# o, b2 e1 s; _, ]8 L- v
- S* l' K5 H1 Z- Z

! [  I7 q& C, P: v" o7 Q8 U[size=14.6667px]
# K* _2 i4 s1 |5 `6 F. K, n

( u& K4 w( R7 V. b# n  y, `! v* R[size=14.6667px]数据库建好了,能用Flexsim直接访问吗?答案是不能。应用程序想要访问某种数据库,必须针对此数据库软件编写相应的“驱动程序”。市面上数据库软件那么多,难道Flexsim公司要一一去编写驱动吗?显然不现实。而这个工作微软件已经完成了。
9 C4 U  A7 O4 B! Y[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对不同的数据库进行连接。1 D1 K3 c1 u2 O6 s$ M/ f
[size=14.6667px]现在,我们在ODBC中为刚建立的ACCESS数据库建立一个连接。
  Z/ y  P7 t) ^* I1 X0 X/ p* `% m[size=14.6667px]ODBC在控制面板--管理工具中可以找到。如果是64位ACCESS,参见[size=14.6667px]http://flexsimasia.com/viewthread.php?tid=6202&page=1&fromuid=610#pid19984。/ ^% n, w) q$ G1 g: q
[size=14.6667px]
# ~& T2 A5 c  |3 V# S
5 l! o5 Z6 _9 s% g
[size=14.6667px]
  F  r& G3 o$ m

' P- j* _# q8 B5 |! e[size=14.6667px]数据源名可以和数据库同名,也可以不同名。Flexsim在同数据库进行连接时,需要使用在ODBC中设置的这个“数据源名”,而不再使用数据库的名字。[size=14.6667px]创建好数据库连接之后,可以在flexsim中使用dbopen命令打开该数据库。
1 o; x: E7 N5 b: M9 R[size=14.6667px]在处理器的“加工时间”中输入以下代码:) p, I4 ^$ U& h9 x3 R/ h
[size=14.6667px]
  1. /**查询数据库*// B6 V8 [( c8 P
  2. string sqlstr="select * from processtimes";
    1 g. m9 H/ o  N& F( O' n. C1 |0 S! y
  3. dbopen("flexsimdata",sqlstr,0);; Z+ L9 x( g7 d5 s: r9 J
  4. //dbviewtable;//查看被打开的表. f; q. C* P/ z
  5. int row=item.Type;: O; l6 c: p7 `8 `- _0 t' U
  6. int col=ipopno(current,1);3 ~' {/ A. d" h# Q1 G  U1 l
  7. double protime=dbgettablenum(row,col);8 G+ e; }% Q3 O- ^  n( N: g3 V( v3 e' F
  8. dbclose;; x# Z& Q3 b- |' j
  9. return protime;
复制代码
/ z7 L1 g) Q) f3 O& z

/ b9 V; d1 V0 V6 }! g5 d[size=14.6667px]
+ G" i! e4 }# x# c( S

! f2 `# j) h  b2 }7 Q' n; b7 p& R[size=14.6667px]模型是用flexsim 17.1.2完成的,低版本的无法打开。$ d2 Q# k" D) H. s9 @" o2 [1 {8 m+ k
[size=14.6667px]
% U  @' u8 R/ f! i5 P! C
9#
shaon007 发表于 2020-5-8 11:26:10 | 只看该作者
666正想了解这一块
7#
慧娴亚伦 发表于 2017-7-7 11:21:49 | 只看该作者
6# 吴庆祺
) W# O% Y' E* ^3 Z# O* Y, W7 l) i# E/ P( A
3 v! {4 z5 M+ G: U. X
回复好像乱码了哟。
6#
吴庆祺 发表于 2017-7-7 14:38:09 | 只看该作者
鑰佸笀闂笅odbc娌℃湁64浣嶇殑鎬庝箞鍔
5#
我很强壮 发表于 2017-6-8 13:57:00 | 只看该作者
谢加老师
4#
fenglin 发表于 2017-5-25 01:44:24 | 只看该作者
3#
lulu-luka 发表于 2017-5-25 00:37:47 | 只看该作者
前排支持~
2#
慧娴亚伦 发表于 2017-5-24 14:23:27 | 只看该作者
感谢加老师分享,补充一点雷区。
' Q7 d3 c" H1 @( L, e% E+ V1、FlexSim目前使用odbc只能对应系统版本,也就是说,64位系统装32位软件无法使用odbc;" j9 I" Y* h) z9 F% y! i; v0 ?
2、如果使用的是access数据库,那么不止是系统版本要对应,office的版本也需要对应,也就是说如果要在64位系统用64位FlexSim还要再安装64位office(access),这样才能在odbc中正确的创建FlexSim可以调用的数据源(查看自己电脑office是否64位的可以看下图,在账户|关于XX中可以看到)
. T( n; C9 R/ }% j+ d1 L+ F' ]8 r: Y/ g: |; n
3、创建数据源的执行程序名字叫做:odbcad32.exe(32位还是64位都是以32结尾),而他们所在的文件夹分别:
/ ^; K2 q: b4 q5 O/ c6 B64位系统:C:\Windows\System327 B$ W. y- ~% G. u# F2 H) c
32位系统:C:\Windows\SysWOW64
+ {  E+ y. c- _3 S- d0 K
2 g5 r/ P, K+ j是的。。。我没有写错,64位在32结尾;32位在64结尾(这个锅要微软背)。
# m, z8 }, `! ]& L大家可以用加老师推荐的方法来找,保证正确。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-1 21:00 , Processed in 0.085034 second(s), 15 queries .

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

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