浅显根底教程
电脑操作教程
电脑怎样拨号上网
怎么做个人网页
怎样做局域网
Word教程(文字处理)
图形图象处理入门
经典进步教程
怎样运用代理服务器
怎么做无盘作业站
Photoshop教程
Dreamweaver3教程
Flash4&5教程
Firework3教程
vwin :首页 Frontpage2000教程
Authware教程
Office2000教程
怎么制造动画图片
OICQ&ICQ运用办法

高手学习攻略

硬件晋级技巧
CGI教程
ASP教程

PHP教程

注册表运用技巧
路由器的设置
vwin建造攻略
SQL
最近更新:
VB
相关内容

在Developer/2000中调用VB

  Oracle数据库办理体系是优异的数据库办理体系,其开发东西Dev eloper/2000也是一个功用强壮、便利灵敏的东西软件,许多Oracle数据库开发人员都挑选Developer/2000作为体系开发东西。但当今的数据库用户已不局限于枯燥无味的数据,他们期望以图文并茂的办法显现查询成果。因此在规划项目时,一般是挑选Developer/2000来开发有关数据库的保护功用,而挑选其它如VB、VC等优异的程序言语来开发有关图形等方面的作业。这就带来一个问题:怎么完成Oracle与它们的衔接。本文就Oracle与VB5.0的衔接来谈一点自己的领会。
  VB5.0与Oracle数据库的衔接
  VB5.0能够与多种外部数据库衔接,比如从Microsoft Access、dB ASE、Microsoft Excel、FoxPro、Lotus、Paradox等数据库中读取数据;经过ODBC,VB5.0能够与SQL Serve r和Oracle相连。经过ODBC衔接数据库时,首先要正确装备ODBC的DSN(Data Source Name ,即数据源) ,然后在VB5.0中经过Data控件或RDO目标衔接数据库。
  1. 装备ODBC
  在Windows 95的操控面板顶用鼠标双击32bit ODBC,发动ODBC数据源办理器(ODBC Data Source Administrator)。在"UserDSN"办法下按"Add"按钮,呈现"Create New Data Source"对话框,从中挑选"M icrosoft ODBC Driver for Oracle"(该驱动在VB装置时主动装置;或在VB装置时挑选"Custom"办法,在Data Access选项中挑选"Oracle OD BC Driv er"),按下"Finish"按钮。此刻呈现"Microsoft ODBC Drive r for Oracle Setup" 对话框,在"Data Source Name"中给定一称号( 如my_dsn),在"User Name"中写上在Oracle数据库中的用户名(如scot t),在"Connect String"中写上想要衔接的Oracle数据库别号(该别号登记在tnsnames.ora文件中,能够经过手艺修改该文件或经过Develop er/2000中的东西"SQL Net Easy Configuration"来装备)。
  2. 设置Data控件
  Data 控件十分简略易用,能够用来履行大部分数据拜访操作,而底子不必编写代码。一个Data 控件能够对应一个基表或视图(能够是数据库中固有的视图目标,也能够是在RecordSource特点中的SQL SEL ECT句子所选出的数据调集)。发动VB,在Form上增加Data控件(如Data 1),并设置其Connect特点。Connect 特点中记载着衔接字符串,它能够由多个参数组成:
  ·DSN:用户称号注册ODBC数据源;
  ·UID:数据库的一个可辨认的用户名;
  ·PWD:与用户名相关的暗码。
  例如将Connect特点置为"ODBC;DSN=my_dsn;UID=scott;PWD=tige r",然后从RecordS ource特点的列表框中挑选某一基表或视图。
  Data 控件能够与DBList、DBCombo、DBGrid 和 MSFlexGrid字段结合运用,只需将它们的DataSource特点设置为某一控件(如Data1)即可,详见VB的有关手册。
  关于VB与长途数据库的衔接,请参阅《计算机国际》1998年4月20 日的"VB5.0中长途数据库的拜访"及1998年5月25日的"用VB和RDO拜访 SQL Server",此处不再赘述。
  从Developer/2000向VB运用程序传递参数
  Developer/2000调用VB运用程序能够有两种办法:一是经过HOST 进程调用外部命令(VB运用程序),如HOST("notepad.exe");二是经过D DE包来调用VB运用程序,如:
  DECLARE
   AppID PLS_INTEGER;
  BEGIN
  AppID:= DDE.APP_BEGIN(‘notepad.exe’);
  END;
  下面首要介绍从Developer/2000向VB运用程序的参数传递。
  1. 命令行参数
  咱们知道,C言语中是经过int main(int argc[, char*argv[ ] [ , char*envp[ ] ] ]) 来接纳命令行参数的,但在VB中没有对应的语法。好在VB供给了COMMAND()函数来回来命令行参数,以下函数能够分化命令行参数并回来参数数组:Function GetCommandLin e(Optional MaxArgs)
  Dim C, CmdLine, CmdLnLen, InArg, I, NumArgs
  '查看是否供给了 MaxArgs 参数。
  If IsMissing(MaxArgs) Then MaxArgs = 10
  ReDim ArgArray(MaxArgs) As String
  NumArgs=0: InArg = False
  CmdLine=Command()
  CmdLnLen=Len(CmdLine)
  '以一次一个字符的办法取出命令行参数。
  For I=1 To CmdLnLen
  C=Mid(CmdLine, I, 1)
  If (C<>" " And C<> vbTab) Then
   If Not InArg Then
   If NumArgs = MaxArgs Then Exit For
   NumArgs = NumArgs+1
   InArg = True
   End If
   ’将字符加到当时参数中。
   ArgArray(NumArgs) = ArgArray(NumArgs)+C
   Else
   InArg=False
  End If
  Next I
  ReDim Preserve ArgArray(NumArgs)
  GetCommandLine = ArgArray()End Function
  调用办法如下:
  Dim cmdarray As Variant
  Rem cmdarray=GetCommandLine()
  这样,从Developer/2000中调用用VB编写的运用程序时就能够向它传递参数,如:
  AppID:=DDE.APP_BEGIN(‘notepad.exe myfile');
  留意:在退出Developer/2000之前一定要先停止所调用的程序,如 DDE.APP_END(AppI D)。
  2. 用基表或视图来传递参数
  当要传递很多的数据时,上述办法就行不通了。例如,将在Develo per/2000中从数据库某个基表中查询出的记载调集传给VB以进行图形显现。处理这一问题的一般办法是将数据悉数写入文件(Oracle Deve loper/2000供给了内建软件包TEXT_IO来进行文件操作),然后以文件名为参数调用VB运用程序。但选用这种办法时,VB运用程序对数据进行检索和排序比较困难,并且文件操作自身也比较烦琐,数据量大时, 速度问题比较突出。
  一种好的处理办法是用数据库作为传递参数的中介,运用基表或视图来保存检索出的数据,然后只需向VB运用程序传递基表或视图名即可,而VB的强壮的数据库功用能够称心如意地操作数据。可是Oracl e的PL/SQL只支撑DML(Data Manipulation Language,即数据操作言语 ),而不支撑DDL(Data Definition Language,即数据描绘言语),因此在PL/SQL中不能动态发生基表或视图。好在Oracle数据库中供给了DB MS_SQL包,该包可履行任何DDL 或DML,包含创立或删去基表及视图。
  下例是在Developer/2000 FORMS中依据当时块的默许挑选条件创立一视图:DECLARE
  cursor_name
  INTEGER;
  rows_processed INTEGER;
  table_name
   VARCHAR2(20):=get_block_property
   (:system.cursor_block, base_table);
  wh_string
  VARCHAR2(500):=Rtrim
  (get_block_property (:system.cursor_block,default_where) );
  sql_string VARCHAR2(400);BEGIN
  :globe.view_name:= ‘v_’|| table_name;
  sql_string := ‘create view ’||:globe.view_name ||
  ‘as select*from ’|| table_name;
  If wh_string Is Not Null Then
  sql_string := sql_string || ‘where'|| wh_string;
  End If;
  cursor_name := dbms_sql.open_cursor;
  dbms_sql.parse(cursor_name,sql_string, dbms_sql.v7);
  rows_processed := dbms_sql.execute(cursor_name);
  dbms_sql.close_cursor(cursor_name);END;
  上例中,open_cursor取得一个新的游标(cursor)号, parse对所要履行的句子进行语法分析, execute履行给定的游标,close_cursor 封闭游标、开释内存。
  DBMS_SQL包还有其它许多功用(如将值绑定给SQL句子中的变量、读取查询成果等), 有爱好的读者能够查阅Oracle手册Oracle Server Application Developer's Guide。
  Developer/2000与VB运用程序的一致
  用Developer/2000开发的运用程序在履行时会呈现一个MDI窗口, 运用程序中的一切窗口都在此MDI窗口之内;而用VB开发的运用程序具有自己独立的窗口,这样开宣布的运用软件会给用户以两个渠道、两套体系之嫌。假如能够处理这个问题,就会使运用软件体系增色不少。咱们很自然地想到将VB的Form(窗口)的父窗口设成Develop 2000的 MDI窗口。
  1. 取得Developer/2000的MDI窗口句柄
  Developer/2000 FORMS用FORMS_MDI_WINDOW符号FORMS的MDI窗口 ,用get_window_pr operty取得其窗口句柄后就能够将它作为参数传给VB运用程序。DECLARE
  w_hdl BINARY_INTEGER;BEGIN
   w_hdl:=TO_NUMBER(get_window_proper  (FORMS_MDI_WINDOW, WINDOW_HANDLE))
  AppID := DDE.APP_BEGIN(‘My_app.exe'|| :
   globe.view_name || ‘ ' || TO_CHAR(w_hdl));END;
  2. 将VB的窗口(Form)放入Developer/2000的MDI窗口
  VB调用Windows API十分简略,只需在调用之前对所调函数进行阐明即可。格局阐明能够运用VB的东西API Text Viewer。运转API Tex t Viewer,装载Win32api.MDB,从中选出所需的API函数,增加到"Selec ted Items"框内,再拷贝到剪贴板,然后粘贴到VB的阐明部分即可。示例如下:Private Declare Function SetParent Lib "user32" (ByVa l hW ndChild As Long, ByVal hWndNewParent As Long) As LongPr ivate Sub Form_Load()
  Dim cmdarray As Variant
  cmdarray = GetCommandLine()
  rc = SetParent(Me.hWnd, cmdarray(2))
  Data1.Connect = "ODBC;DSN=my_dsn;UID=
   scott;PWD=tiger"
  Data1.RecordSource = "scott." + cmdarray(1)End Sub
  将该VB运用程序编译成可履行程序,以便Developer/2000调用。
  至此,VB的窗口现已归入Developer/2000的MDI窗口内。咱们能够将VB Form的ShowI nTaskbar特点设置成False,使VB运用程序不呈现在使命栏内,一起给该Form的Icon特点赋一个与Developer/2000窗口图标类似的图标,这样用户简直分辨出软件哪一部分是用Dev eloper/ 2000开发的,哪一部分是用Visual Basic开发的。
  国家根底地舆信息中心 王小平

用VB完成多文件查找与替换功用
用VB 5.0 规划Browser及FTP程序
用Visual Basic 5.0规划E-mail程序
谈谈WIN API在VB中的运用
在VB中运用Word的“艺术字”东西
获取Win95特别目录精确途径
装备文件.ini在VB5中的运用
操控结构VB5程序规划
用VB切换三个特别键
用VB5对Windows 95使命栏提示区编程
用API改善ListView显现作用
VB中Grid控件的打印办法
在VB中完成文件上载
用Microsoft Agent 控件与电脑攀谈
用VB5直接操控Excel 97
在Developer/2000中调用VB
 
 
 
 
 
 
 
 
 
 
教程站
收集整理