VB查询数据库记录
VBSQL命令

VB SQL命令全AAb s 求绝对值Ac tiveC ontro l 得到焦点的对象Acti veFor m 得到焦点的表单Arra y 指定数组Ap p 得知程序信息AppAc tivat e 激活执行中的应用程序A sc 求字符的内码AscB求字符的ASCIIAsc W 求字符的UniC ode Atn 求Tan-1BBeep发出预设的警示声CCall调用子程序Ca lenda r 选择月历Ch oose取出一列值的某个值CBoo l 数值转成布尔数CByt e 数值转成位元格式CCu r 数值转成货币格式CDa te 数据转成时间CDbl数值转成双精度浮点数CD ec 数据转成十进数ChD ir 改变目前路径缓充的路径ChDr ive 改变目前磁盘缓充的磁盘Chr由内码求得一字符ChrB由ASC II求得一字符C hrW 由UniCo de求得一字符C Int 数据转成In tegerCLn g 数据转成LongCom mand读出程序的参数C onst定义常数CosCOS C Sng 数值转成单精度浮点数CurD ir 得知目前路径缓充的路径CVar数值转成可变变量D Date得到目前电脑的时间Date$ 得到目前电脑时间字符串DateA dd 日期加法得日期Dat eDiff日期相减得数值DateP art 日期部份资讯Dat eSeri al 字符串转日期Date Value数字转日期Da y 得知日期变量内是几号D DB 折旧的计算Delet eSett ing 删除系统登录内的数据Dir得知目前路径内的文件名Do Event s 闲置函数EEnd结束程序Env iron取得环境变量的数据EOF某个文件缓冲的指标是否到档尾Eras e 重新初始化数组Err错误资讯Error错误代码信息E xp 得到自然对数F Fix 去除小数FileC opy T o 复制文件Fi leAtt r 文件开启模式FileD ateTi me 文件存档日期File Len 文件长度Filte r 筛选数组F ormat数据格式化输出FreeF ile 空的文件编号FV求得定期、定额支付且固定利率下之年金的值GGetA llSet ting得到所有系统登录的资讯Ge tAttr得知文件属性G etSet ting得到系统登录的资讯H Hex 将数值转成16进数表示的字符串Hour得知日期变量内是几时IIf. The n . E lse 判断结构IMESt atus得知IME输入法状态InS tr 寻找字符串里的字符串I nStrB寻找字符串里的AS CII IntSt rRev由字符串右边开始寻找字符串里的字符串Int取整数JJ oin 将数组数据加入分隔字符后组合成一新字符串KKill删除文件LLB ound得知数组最小起始范围LCa se 字符串转小写Left截取字符串左边几个字Le n 得知字符串的字数Len B 得知变量占用记忆体几个By teL oadPi cture载入图形Log求对数值 LSet字符串向左对齐LTrim移除字符串最左边的空白字符M Mid 截取字符串里某些字符串Min ute 得知日期变量内是几分MkDi r 建立新的数据颊Mont h 得知日期变量内是第几月NN ame A s 更改文件名N ow 得知目前点脑的日期与时间O O ct 字符转成八进制的字符串Opti on VB内部一些选项设定PP opupM enu 跳出菜单Print列印数据QQBCo lor 设定颜色(16色) RR andom ize 随机数初始化声明R eplac e 取代字符串中某些字符串V B6提供RGB设定颜色(255*255*255色) RmDir移除数据颊Rn d 得到一个随机数RSet字符串向右对齐RTrim去除字符串最右边的空白字符S SaveP ictur e 储存图形Sc reen得知屏幕简易资讯Secon d 得知日期变量内是几秒S etAtt r 设定文件属性Sgn 得知是整数还是负数vShel l 执行外部程序Sin 得知SinSpace填入数个空白字符Spli t 以某字符串将字符串拆解成数组 VB6提供S qr 求平方根S tr 数值转字符串StrC omp 比较字符串StrC onv 改变字符串型态St ring设定一个重覆的字符串Str Rever se 字符串反转V B6提供T Tab 列印n个制表符Ta n 得知T anT ime 得知、设定电脑时间Time$得知、设定时间字符串Ti mer 得知今天电脑总秒数TimeS erial字符串转时间T imeVa lue 数字转时间Trim去除字符串首尾的空白字符TypeN ame 得知变量类别的名称UU Bound得知数组的最值UCase字符串转大写VVa l 将字符串转成数字Var Type得知变量的类型WWe ekDay得知日期变量内是星期几W eekda yName将Wee kDay传回值改成文字显示V B6提供Y Year得知日期变量内是几年SQL c ode--语句功能--数据操作SELEC T --从数据库表中检索数据行和列IN SERT--向数据库表添加新数据行D ELETE --从数据库表中删除数据行UPDAT E --更新数据库表中的数据--数据定义CRE ATE T ABLE--创建一个数据库表DROP TABL E --从数据库中删除表AL TER T ABLE--修改数据库表结构CREA TE VI EW --创建一个视图DRO P VIE W --从数据库中删除视图C REATE INDE X --为数据库表创建一个索引DROP INDE X --从数据库中删除索引C REATE PROC EDURE --创建一个存储过程DRO P PRO CEDUR E --从数据库中删除存储过程CREA TE TR IGGER --创建一个触发器DROP TRIG GER --从数据库中删除触发器CRE ATE S CHEMA --向数据库添加一个新模式DROPSCHEM A --从数据库中删除一个模式CREA TE DO MAIN--创建一个数据值域ALTE R DOM AIN --改变域定义DRO P DOM AIN --从数据库中删除一个域--数据控制G RANT--授予用户访问权限DENY --拒绝用户访问REVOK E --解除用户访问权限--事务控制COMMI T --结束当前事务ROLL BACK--中止当前事务S ET TR ANSAC TION--定义当前事务数据访问特征--程序化SQLD ECLAR E --为查询设定游标EXP LAN --为查询描述数据访问计划OP EN --检索查询结果打开一个游标FE TCH --检索一行查询结果CLOSE --关闭游标PR EPARE --为动态执行准备SQL 语句EXE CUTE--动态地执行SQL语句D ESCRI BE --描述准备好的查询---局部变量de clare @idchar(10)--set@id = '10010001'sel ect @id ='10010001'---全局变量---必须以@@开头--I F ELS Edec lare@x in t @yint @z intsele ct @x = 1@y =2 @z=3if@x >@ypr int 'x > y' --打印字符串'x > y'els e if@y >@zpr int 'y > z'els e pri nt 'z > y'--C ASEu se pa nguu pdate empl oyeeset e_wage =ca sewh en jo b_lev el =’1’ t hen e_wage*1.08 when job_level = ’2’ the n e_w age*1.07 w hen j ob_le vel = ’3’thene_wag e*1.06 els e e_w age*1.05e nd--WHIL E CON TINUE BREA Kdec lare@x in t @yint @c intsele ct @x = 1@y=1while @x < 3be ginp rint@x --打印变量x的值w hile@y <3beg inse lect@c =100*@x + @ypri nt @c --打印变量c 的值sel ect @y = @y + 1endselec t @x= @x+ 1s elect @y = 1en d--WAITF OR--例等待1小时2分零3 秒后才执行S ELECT语句w aitfo r del ay ’01:02:03’s elect * fr om em ploye e--例等到晚上11 点零8 分后才执行SEL ECT 语句wai tfortime’23:08:00’sele ct *fromemplo yee***S ELECT***selec t *(列名) fr om ta ble_n ame(表名) wh ere c olumn_name oper atorvalueex:(宿主)s elect * fr om st ock_i nform ation wher e sto ckid= str(nid)stoc kname = 's tr_na me' stock namelike'% fi nd th is %'sto cknam e lik e '[a-zA-Z]%' --------- ([]指定值的范围)stock namelike'[^F-M]%'---------(^排除指定范围)---------只能在使用like关键字的wh ere子句中使用通配符)or stoc kpath = 's tock_path'or s tockn umber < 1000an d sto ckind ex =24no t sto cksex = 'm an's tockn umber betw een 20 and 100stock numbe r in(10,20,30)order by s tocki d des c(asc) --------- 排序,desc-降序,as c-升序order by 1,2 --------- by列号st ockna me =(sele ct st ockna me fr om st ock_i nform ation wher e sto ckid= 4)---------子查询--------- 除非能确保内层sele ct只返回一个行的值,--------- 否则应在外层wh ere子句中用一个i n限定符selec t dis tinct colu mn_na me fo rm ta ble_n ame --------- d istin ct指定检索独有的列值,不重复sele ct st ocknu mber,"sto cknum ber + 10"= sto cknum ber + 10 f rom t able_nameselec t sto cknam e , "stock numbe r" =count(*) f rom t able_namegroup by s tockn ame--------- g roupby 将表按行分组,指定列中有相同的值havin g cou nt(*) = 2---------havin g选定指定的组s elect *f rom t able1, tab le2 where tabl e1.id *= t able2.id -------- 左外部连接,t able1中有的而t able2中没有得以null表示tab le1.i d =*table2.id-------- 右外部连接sele ct st ockna me fr om ta ble1union [all] ----- un ion合并查询结果集,all-保留重复行sele ct st ockna me fr om ta ble2***i nsert***inser t int o tab le_na me (S tock_name,Stock_numb er) v alue("xxx","xx xx")value (sel ect S tockn ame , Stoc knumb er fr om St ock_t able2)---v alue为selec t语句***up date***u pdate tabl e_nam e set Stoc kname = "x xx" [where Stoc kid = 3]S tockn ame = defa ultS tockn ame = nullStoc knumb er =Stock name+ 4***de lete***d elete from tabl e_nam e whe re St ockid = 3trunc ate t able_name----------- 删除表中所有行,仍保持表的完整性d rop t abletable_name --------------- 完全删除表***alt er ta ble*** ---修改数据库表结构alte r tab le da tabas e.own er.ta ble_n ame a dd co lumn_namechar(2) nu ll .....s p_hel p tab le_na me ---- 显示表已有特征crea te ta ble t able_name(name char(20), agesmall int,lname varc har(30))i nsert into tabl e_nam e sel ect ......... -----实现删除列的方法(创建新表)alter tabl e tab le_na me dr op co nstra int S tockn ame_d efaul t ---- 删除S tockn ame的d efaul t 约束***fu nctio n(/*常用函数*/)***----统计函数----A VG --求平均值COUNT --统计数目MA X --求最大值M IN --求最小值SUM --求和--AVGusepangusele ct av g(e_w age)as de pt_av gWagefrom empl oyeegroup by d ept_i d--MAX--求工资最高的员工姓名use pang usel ect e_namefrom empl oyeewhere e_wa ge =(sele ct ma x(e_w age)fromemplo yee)--ST DEV()--ST DEV()函数返回表达式中所有数据的标准差--STDEV P()--STDE VP()函数返回总体标准差--VAR()--VAR()函数返回表达式中所有值的统计变异数--VARP()--VARP()函数返回总体变异数----算术函数----/***三角函数***/S IN(fl oat_e xpres sion) --返回以弧度表示的角的正弦COS(float_expr essio n) --返回以弧度表示的角的余弦TA N(flo at_ex press ion)--返回以弧度表示的角的正切COT(f loat_expre ssion) --返回以弧度表示的角的余切/***反三角函数***/ASIN(floa t_exp ressi on) --返回正弦是FLOA T 值的以弧度表示的角ACO S(flo at_ex press ion)--返回余弦是FLO AT 值的以弧度表示的角AT AN(fl oat_e xpres sion) --返回正切是FL OAT 值的以弧度表示的角A TAN2(float_expr essio n1,fl oat_e xpres sion2)--返回正切是float_expr essio n1 /f loat_expre s-sio n2的以弧度表示的角DEGR EES(n umeri c_exp ressi on)--把弧度转换为角度返回与表达式相同的数据类型可为--INT EGER/MONEY/REAL/FLOA T 类型RADIA NS(nu meric_expr essio n) --把角度转换为弧度返回与表达式相同的数据类型可为--INTE GER/M ONEY/REAL/FLOAT类型E XP(fl oat_e xpres sion) --返回表达式的指数值LO G(flo at_ex press ion)--返回表达式的自然对数值L OG10(float_expr essio n)--返回表达式的以10 为底的对数值SQRT(floa t_exp ressi on) --返回表达式的平方根/***取近似值函数***/CEIL ING(n umeri c_exp ressi on) --返回>=表达式的最小整数返回的数据类型与表达式相同可为--INTE GER/M ONEY/REAL/FLOAT类型F LOOR(numer ic_ex press ion)--返回<=表达式的最小整数返回的数据类型与表达式相同可为--INT EGER/MONEY/REAL/FLOA T 类型ROUND(nume ric_e xpres sion) --返回以inte ger_e xpres sion为精度的四舍五入值返回的数据--类型与表达式相同可为INT EGER/MONEY/REAL/FLOA T 类型ABS(n umeri c_exp ressi on) --返回表达式的绝对值返回的数据类型与表达式相同可为--IN TEGER/MONE Y/REA L/FLO AT 类型SIGN(nume ric_e xpres sion) --测试参数的正负号返回0零值1 正数或-1负数返回的数据类型--与表达式相同可为INTEG ER/MO NEY/R EAL/F LOAT类型PI() --返回值为π即3.1415926535897936RAND([int eger_expre ssion]) --用任选的[integ er_ex press ion]做种子值得出0-1 间的随机浮点数----字符串函数----AS CII() --函数返回字符表达式最左端字符的AS CII 码值CHA R() --函数用于将ASCI I 码转换为字符--如果没有输入0 ~ 255之间的AS CII 码值CHAR函数会返回一个NU LL 值LOWER() --函数把字符串全部转换为小写U PPER() --函数把字符串全部转换为大写ST R() --函数把数值型数据转换为字符型数据LT RIM() --函数把字符串头部的空格去掉RTR IM()--函数把字符串尾部的空格去掉LEFT(),RI GHT(),SUBS TRING() --函数返回部分字符串CHARI NDEX(),PAT INDEX() --函数返回字符串中某个指定的子串出现的开始位置SO UNDEX() --函数返回一个四位字符码--SOUND EX函数可用来查找声音相似的字符串但SO UNDEX函数对数字和汉字均只返回0 值DIF FEREN CE()--函数返回由SOU NDEX函数返回的两个字符表达式的值的差异--0 两个S OUNDE X 函数返回值的第一个字符不同--1两个SOU NDEX函数返回值的第一个字符相同--2 两个SOUND EX 函数返回值的第一二个字符相同--3 两个S OUNDE X 函数返回值的第一二三个字符相同--4 两个S OUNDE X 函数返回值完全相同Q UOTEN AME() --函数返回被特定字符括起来的字符串/*sel ect q uoten ame('abc', '{') quot ename('abc')运行结果如下----------------------------------{{abc} [ab c]*/REPL ICATE() --函数返回一个重复ch aract er_ex press ion 指定次数的字符串/*selec t rep licat e('ab c', 3) rep licat e( 'a bc',-2)运行结果如下----------- -----------abcab cabcNULL*/RE VERSE() --函数将指定的字符串的字符排列顺序颠倒R EPLAC E() --函数返回被替换了指定子串的字符串/*selec t rep lace('abc123g', '123', 'd ef')运行结果如下----------- -----------abcd efg*/SPA CE()--函数返回一个有指定长度的空白字符串STUFF() --函数用另一子串替换字符串指定位置长度的子串----数据类型转换函数----CAST() 函数语法如下CAST() ( A S [ l ength ])C ONVER T() 函数语法如下CONV ERT() ([ l ength ], [, st yle])sel ect c ast(100+99 as c har)conve rt(va rchar(12), getd ate())运行结果如下------------------------------------------199 Jan 15 2000----日期函数----DA Y() --函数返回date_expre ssion中的日期值MON TH()--函数返回date_expr essio n 中的月份值YE AR()--函数返回date_expr essio n 中的年份值DA TEADD( , ,)--函数返回指定日期da te 加上指定的额外日期间隔n umber产生的新日期DA TEDIF F( ,,)--函数返回两个指定日期在date part方面的不同之处DA TENAM E( ,) --函数以字符串的形式返回日期的指定部分DA TEPAR T( ,) --函数以整数值的形式返回日期的指定部分GE TDATE() --函数以DA TETIM E 的缺省格式返回系统当前的日期和时间----系统函数----A PP_NA ME()--函数返回当前执行的应用程序的名称C OALES CE()--函数返回众多表达式中第一个非NULL表达式的值COL_LENG TH(<'table_name'>, <'colu mn_na me'>) --函数返回表中指定字段的长度值CO L_NAM E(, ) --函数返回表中指定字段的名称即列名DATAL ENGTH() --函数返回数据表达式的数据的实际长度DB_ID(['data base_name']) --函数返回数据库的编号DB_N AME(d ataba se_id) --函数返回数据库的名称HOST_ID()--函数返回服务器端计算机的名称HOS T_NAM E() --函数返回服务器端计算机的名称IDEN TITY([, se ed in creme nt])[AS c olumn_name])--IDENT ITY()函数只在SELEC T INT O 语句中使用用于插入一个id entit y col umn列到新表中/*sele ct id entit y(int, 1,1) as colu mn_na mein to ne wtabl efro m old table*/IS DATE() --函数判断所给定的表达式是否为合理日期IS NULL(, ) --函数将表达式中的N ULL 值用指定值替换ISN UMERI C() --函数判断所给定的表达式是否为合理的数值NEWI D() --函数返回一个UNI QUEID ENTIF IER 类型的数值NULLI F(, )--NU LLIF函数在ex press ion1与expr essio n2 相等时返回NU LL 值若不相等时则返回exp ressi on1 的值--------------------------------------------------------------------------------sql中的保留字acti on ad d agg regat e allalt er af ter a nd asasc avgavg_r ow_le ngthauto_incre mentbetw een b igint bitbinar ybl ob bo ol bo th bycas cadecasecharchara cterchan ge ch eck c hecks um co lumncolu mns c ommen t con strai nt cr eatecros s cur rent_datecurre nt_ti me cu rrent_time stampdat a dat abase data bases datedat etime dayday_h our d ay_mi nuteday_secon d day ofmon th da yofwe ek da yofye ard ec de cimal defa ult d elaye dde lay_k ey_wr ite d elete desc desc ribedist inctdisti nctro w dou ble d rop end e lse e scape esca ped enclo sed e num e xplai n exi sts field s fil e fir st fl oat float4 flo at8 f lushforei gnf rom f or fu ll fu nctio ngl obalgrant gran ts gr oup havin g hea p hig h_pri ority hourhou r_min ute h our_s econd host s ide ntifi edi gnore in i ndexinfil ein ner i nsert inse rt_id intinte ger i nterv al in t1 in t2i nt3 i nt4 i nt8 i nto if is isam joinkey keys kill last_inse rt_idlea dingleftlengt h lik eli nes l imitloadlocalloc k log s lon g lon gbloblon gtext low_prior ity m ax ma x_row sma tch m edium blobmediu mtext medi umintmid dlein t min_rows minu te mi nute_secon dmo difymonth mont hname myis amn atura l num ericno no tnu ll on opti mizeoptio nop tiona lly o r ord er ou ter outfi le pa ck_ke ys pa rtial pass wordprec ision prim ary p roced ure p roces spr ocess listprivi leges read realref erenc es re loadregex p ren ame repla ce re stric t ret urnsrevok erl ike r ow ro ws se condsele ct se t sho w shu tdownsma llint sona me sq l_big_tabl es sq l_big_sele cts sql_l ow_pr iorit y_upd atessql_l og_of f sql_log_updat e sql_sele ct_li mit sql_s mall_resul t sql_big_resul t sql_warn ingsstrai ght_j oin start ing s tatus stri ng ta ble table s tem porar y ter minat ed te xt t hen t ime t imest amp t inybl obt inyte xt ti nyint trai lingtot ype u se us ing u niqueunl ock u nsign ed up dateusageval ues v archa r var iable s var yingvarb inary with writ e whe nwh ere y ear y ear_m onthzerof ill 。
VB使用ADODB操作数据库

VB使用ADODB操作数据库Dim conn As New ADODB.Connection ’创建一个 Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行Dim rs As ADODB.Recordset ’创建一个 Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用Dim CnStr As String, Sql As String ’创建两个字符串变量分别存放两个集合的SQL语句代码段1、装载数据库(不属于Recordset集合)=============Dim FileNamw$, DbIp$, DbName$, DbUser$, DbPw$’以上5个字符串变量分别表示文件路径和文件名、数据库地址、数据库名、数据操作员用户名、操作员密码FileName = App.Path & "\’数据库名’"DbIp = "数据库地址"DbName = "数据库名"DbUser = "数据操作员用户名"DbPw = "操作员密码"’以上变量根据数据库类型的不同而不同,有可能只需要1至两个变量’1)连接Access数据库:’-------------------CnStr = "PROVIDER=microsoft.jet.oledb.3.51;persist security info =false;data source=" & FileNa me & ";Jet OLEDB:Database Password=" & DbPw’2)连接Oracle数据库:’-------------------CnStr = "PROVIDER=MSDAORA.1;Password=" & DbPw & ";User ID=" & DbUser & ";Data S ource=" & FileName & ";Persist Security Info=True"’其中:’PASSWORD:密码’User ID: 用户号’Data Source: 数据库名’Persist Security Info:’Provider:’3)连接VF的DBF库:’----------------CnStr = "PROVIDER=MSDASQL.1;Persist Security Info=False;Driver={Microsoft Visual FoxPro Driver};UID=" & DbUser & ";SourceDB=" & FileName &";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;"’4)连接SQL的数据库’------------------CnStr = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid=" & DbUser & ";pwd=" & DbPw & ";DRIVER=SQL Server;DATABASE=" & DbName & ";WSID=GQSOFT;SERVER= " &DbIP’也可以使用这段简易代码 CnStr = "Provider=SQLOLEDB;Data Source=" & DbIp & ";DATABASE=" & DbName & ";U ID=" & DbUser & ";pwd=" & DbPwConn.Open cnstr ’使用 Connection 集合的 Open 方法与数据库建立连接2、Recordset集合的常用方法==========================’1)打开一个表’------------Sql = "select * from 表名" ’SQL查询语句Set rs = New ADODB.Recordset ’新建一个实例rs.Open Sql, conn ’使用 Open 方法打开数据库中的一个表’注意,这种打开方式只能使用 rs.MoveNext (即,向后移动行坐标)而不能像其他方向,并且不能修改数据内容’’rs.Open Sql, conn,1 ’虽然只加了个“1”,但这种方法可以向任何方向移动行坐标。
ifixVB连接数据库,数据库数据处理附带代码参考

一,在ifix帮组手册中的参考内容 (1)二,在vb中需要引用内容 (6)三,采用2中引用的ADO ext 方式连接用户数据库参考 (6)四,具体的参考代码 (8)4.1 创建新表 (8)4.2 删除不需要时间范围数据 (9)4.3 删除某个表 (10)4。
4 清除表中重复数据 (11)4.5 将临时数据表中数据倒回主数据表 (15)4.6 删除某个表中全部数据 (17)4.7 读一个数据库中数据,将该数据写入另一个数据库 (18)附件1:网络下载参考数据 (25)附录2:sql参考 (36)附录3:附带一个小资料sql参数 (40)SQL常用命令使用方法 (43)参考1:日表代码 (50)参考2:污水月表代码 (55)参考3:单年表代码 (63)参考4:多年表代码 (69)参考5:污水设备运行时间表代码 (75)参考6:删除某表指定时间前数据 (81)一,在ifix帮组手册中的参考内容Driver={Microsoft Access Driver (*.MDB)};DBQ=E:\\报表\\gyws_report。
mdb;”INSERT INTO fixreport” + _"(datatime,datatag,datavalue)” + _”V ALUES(’2010—7-13 10:11:23', ’addbc’, '124.45’)"二, 在vb中需要引用内容三,采用2中引用的ADO ext 方式连接用户数据库参考四,具体的参考代码4。
1 创建新表Private Sub close_pic16_Click()’++++++再已存在库中创建表+++++Dim cat As ADOX.CatalogDim tbl As New ADOX.TableSet cat = New ADOX。
Catalogcat.ActiveConnection = ”Provider=Microsoft.Jet。
VB中基于ADO的数据库动态查询的实现

据 访 问对 象 ( D A O ) 、 远程数据对象 ( R D O ) 和A D O对 源 的连接 :
象 模型 , A D O作 为最 新 的数 据库访 问模 式 ,具有 易于
使用、 访 问灵 活 、 应 用广泛 的特 点 。在进 行数据 库编 程 时, 往 往 根 据 用 户给 定 的组 合条 件 进 行 查询 , 这 需 要 在 查询 语 句 中使用 变量 , 由这些 变 量传 递用 户 的查 询 请求 , 返 回 的记 录 集 是我 们 需 要 的 结果 集 , 有 了结 果
2
查询语句 中条件的表示不能直接表示 为:
“ h b > = s O a n d O S= s l ”
可表 示 成 :
“ h b > - " &s O & ”a n d ' ‘ &’ , 0 s _ ‘ ‘ & ‘ &s 1&” ”
表2 表x c中的 记 录
x h 78 7 o 01 h b 75 O S 由
语 句, 可 以方便 的获得 用 户所要 求的数 据集 。
【 关键词 】 : A DO; 数据库; 动态查询
在V B的开发环 境 中, 有三 种数据 库访 问方 式 : 数 为 了便 于说 明问题 , 先 定义一 些变量 和进 行数据
Di m s O As I n t e g e r
Se t r s=Ne w Re c o d r e s t
集, 就可 以对 他进 行 如 添 加 、 删除、 修改 、 定位 记 录 等 处理。本文讨论用 V B 6 . 0提 供 的 A c t i v e X 数 据 对 象
( A D O访 问数据 库时) , 如何 根据用 户 的查 询请求 返 回 记录集 的几种 方法 。
VB使用ADODB操作数据库的常用方法

VB使用ADODB操作数据库的常用方法ADO常用方法下面是我所掌握的使用ADO对数据库操作的一些常用方法,主要是提供给初学者作为参考,有不对的地方请指正.如有补充不胜荣幸准备工作========Dim conn As New ADODB。
Connection ’创建一个Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行Dim rs As ADODB。
Recordset ’创建一个Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用Dim CnStr As String,Sql As String’创建两个字符串变量分别存放两个集合的SQL语句代码段1、装载数据库(不属于Recordset集合)=============Dim FileNamw$,DbIp$,DbName$, DbUser$,DbPw$'以上5个字符串变量分别表示文件路径和文件名、数据库地址、数据库名、数据操作员用户名、操作员密码FileName = App。
Path & "\’数据库名'”DbIp = ”数据库地址"DbName = ”数据库名"DbUser = "数据操作员用户名”DbPw = "操作员密码”'以上变量根据数据库类型的不同而不同,有可能只需要1至两个变量’1)连接Access数据库:'-—-----——-——-——-—--CnStr = "PROVIDER=microsoft。
jet.oledb。
3.51;persist security info =false;data source="& FileName & ”;Jet OLEDB:Database Password="&DbPw’2)连接Oracle数据库:'--—-—---—-——-——-——-CnStr = "PROVIDER=MSDAORA。
用VB实现将数据库查询结果从报表输出

}
r l r en n1 8‘
l I
p b c v i x ue sr sr g s1 u H o e  ̄ t n et i q) d l ( n t
图 3 报表窗口
{_ 】 I …・ p b i v i e eue e t s r g s1 u l od x tD l e i o) c c e{ n t I …- . . p b ci t x ct Uxaes r g s 1 u 5 n eue it (t n q) e t i
F r A t a e】 o m— c i t(事件中,首先关闭要查 v 询的数 据源 ,然后 再打开 要查 询的数 据 以 , 源。这 样做 的 目的 是为 了在每 一次查 询 直 接 利 刑 报 表 的 数 据 环 境 结束 后 ,为 下一 次查 询数 据 源做 准 备 D t E v r n ln 作为窗体上绑定控件 另外 ! o m Aci ae ) a a n io oe t F r t t( v 事件中 .还通过 D tg d羊 报表的数据源 ,在窗体 查询 循环 语句 为组 合框 里瀑加数 据表的备字段 aa f 1 i ] 按钮的单击事件代码中执行相应的查 l语 名,以 方便 用户选择 要查 询的 宇段 。查 向 句,从而改变教据 环境 D tE v rn e t 询按 钮的单 击事 件 C mma d C i k ) aa n i m n o o n l (. 1 c 巾记录集纳数掘 这样 倪修改窗体上绑 就是 通过使用 上面的语 句 1 .实现按组合 定控件Daa rd tg i 的记录集, 时 也使得报 框 中的查 询 条件完 成查询 操作的 , 并将 表控 件的l 录 集 与窗 体 上 绑 定 控 件 查 询结果 显示 在图 2的窗 几中 .在图 2的 D tg i aa rd记录 皂的 内容相同 盘询语句 I 查询结 果窗 u中 ,用户可 根据需 要确 定
浅谈如何巧妙实现VB数据库查询

d ws 专 业 开 发 工 具 S o DK相 媲 美 。 在 V 中 , 用 事 件 驱 动 的 编 程 机 制 、 B 利 新 UCa es ac n m e s (e r h a ) 颖 易用 的 可视 化 设计 工 具 ,使 用 W id ws内 部 的 广 泛应 用 程 序 接 口 ( I no AP ) ‘ 用 U a e参 数 , 输 入 的 字母 统 一 转 换 为大 写 使 Cs 将 函数 , 动 态 链 接 库 ( L) 对 象 的链 接 与 嵌 入 ( E) 开 放 式 数 据 连 接 DL 、 OL 、 F m 2. d Or A odc1. Rec ds . ov or etM eNe xt ( 0DB 等 技 术 , 以高 效 、 速 地 开 发 W id ws环 境 下 功 能 强 大 、 C) 可 快 no 图形 界 面 丰 富 的 应 用 软 件 系 统 VB给 大 家 的 印 象 极 为 深 刻 。 让 V B程 序 编 写 的前 台
‘ 查 询 完 成 后 的光 标 位 置 再 移 回第 一 栏 , 将 以便 于 下次 查 询
E d n E d f n I
W en d
‘ 这 里 循 环 完 全 结 束 到
F r .e t .e t = F r . d d 1R c rs t ils ( 产 品 om2T x 1T x o m2A o c . e od e ed “ F 现 型号 “ ) F r .e t .e t= F r . d d l R c rs t il (产 品 o m2T x 2T x o m2A o c e od e ed ” F s
‘ 查询之前 , 在 先将 光标 位 置 移 动 到 第 一 栏 , 便于 查询
l 0 m 2 Ad d 1 Re o d e . OF T e f F r . o c . c r s t型号 , 重 新 输 入 “ 6 错 误 ” g o (查 请 ,1 ,“ ) ‘ 查 询 到 了该 字 段 的 最 后 一 项还 是 没 有 的话 , 弹 出 出 错 提 示 若 就 V B语 言 实 现 的 查 询 方 式 。 在 这里 , 由于 仍 然 是 在 W hl 环 里 面 , i e循 因此 要 注 意 程 序 语 言 的 关键 词 : VB数 据 库 查 询 往 i e循 n, 对于 V B程 序 设 计 语 言 , 必 大 家都 不 陌生 , 可 谓 是 功 能 强 大 处理 , 往 我 们 结 束 W hl 环 是 用 W e d 但 此 处并 没 有 给 出 能够 想 它 如 n 同 且 简单 易学 , 计 算 机 编 程 语 言 初 学 者 来 说 是 非 常 不 错 的 一 种 选 择 , 结 束 循 环 的 语 句 , 果 强 行 写上 W e d就 会 出 现 死 循 环 : 时 也 不 对 n 那 但 是一 个合 格 的程 序 并 不 能 单 纯 的只 有 程 序 ,还 必 须 和 数 据 库 相 连 能使 用 我们 以往 常 常 用 的 E d来 表 示 结 束 , 样 会 一 下 子 结 束 了整 这 如何 才 能达 到 既退 出 接 才 能得 到 更 广 泛 的使 用 。在 V B程 序 中 , 同样 可 以连 接 各 种 数 据 个 程 序 , 也 不 是 我 们 想 要 达 到 的 效 果 。那 么 , 也 该 循 环 又 继 续 保 留运 行 状 态 的效 果 呢 ? 我 们 可 以 写 出 程 序 如 下 : 库 ,l u D T I  ̄ 以 A A控 件 连 接 S 、 A O 控 件 连 接 A c s , 是 基 ;t : QL 以 D ce s但 E i Su xt b 本 上所 有 的对 数 据 库 的查 询 操 都 必 须 要 用 标 准 S QL语 句 , 形 中就 无 ‘ x 是 局 部 的退 出 ,在 其 后 跟 上 S b就 表 示 仅 仅 退 出 当前 的 Ei t u 增 加 了我 们 编 写 程 序 的难 度 。 么 , 里 我 就 介 绍 一 种 直 接 使 用 程 序 那 这 循 环 这 一 块 语 言 就 可 以实 现 查 询 的方 法 。 这样 , 通过 E i语 句退 出循环这一 块后 , xt 我们还 能够继 续执行 V B数据 库 中的 数据 连 接 方式 有 多 种 , 包括 最 为基 本 的 OD C数 B 据 源连 接 方 式 和 D T A A数 据 控件 的连 接 方 式 , 此类 数 据 操作 必 须 要 如 下 的 程 序 : 但
VB操作EXCEL表的常用方法

VB操作EXCEL表的常用方法VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。
因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。
但由于VB与EXCEL由于分别属于不同的应用系统,如何把它们有机地结合在一起,是一个值得我们研究的课题。
一、 VB读写EXCEL表:VB本身提自动化功能可以读写EXCEL表,其方法如下:1、在工程中引用Microsoft Excel类型库:从'工程'菜单中选择'引用'栏;选择Microsoft Excel 9.0 Object Library(EXCEL2000),然后选择'确定'。
表示在工程中要引用EXCEL类型库。
2、在通用对象的声明过程中定义EXCEL对象:Dim xlApp As Excel.ApplicationDim xlBook As Excel.WorkBookDim xlSheet As Excel.Worksheet3、在程序中操作EXCEL表常用命令:Set xlApp = CreateObject('Excel.Application') '创建EXCEL对象Set xlBook = xlApp.Workbooks.Open('文件名') '打开已经存在的EXCEL工件簿文件xlApp.Visible = True '设置EXCEL对象可见(或不可见)Set xlSheet = xlBook.Worksheets('表名') '设置活动工作表xlApp.Cells(row, col) =值 '给单元格(row,col)赋值XLApp.Cells(i, 1).Interior.ColorIndex = i'设计单元格颜色i=1--56xlSheet.PrintOut '打印工作表xlBook.Close (True) '关闭工作簿xlApp.Quit '结束EXCEL对象Set xlApp = Nothing '释放xlApp对象xlBook.RunAutoMacros (xlAutoOpen) '运行EXCEL启动宏xlBook.RunAutoMacros (xlAutoClose) '运行EXCEL关闭宏自己用代码就可以获取颜色列表了Sub yansecode()For i = 1 To 56XlApp.Cells(i, 1) = ixlapp.Cells(i, 1).Interior.ColorIndex = iNextEnd Sub4、在运用以上VB命令操作EXCEL表时,除非设置EXCEL对象不可见,否则VB程序可继续执行其它操作,也能够关闭EXCEL,同时也可对EXCEL进行操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB查询数据库记录在VB中进行数据库记录的查询操作,必需根据打开数据库的方式来确定。
以VB3.0为例,数据集对象有Table、Dynaset、Snapshot三种,下面四种查询方法分别适用于以上面不同的对象方式打开的数据库。
1.用SEEK方法查询。
这种方法只使用于以Opentable方式打开的Table类型的数据表,而且在查询之前必须要以查询字段建立索引文件,由于已建立了索引文件,所以查询速度很快,这种方式的查询结果是将指针移到符合条件的第一个记录。
例如:set tb=db.opentable("demo")tb.index="nameindex”tb.seek "=","张三"2.用FILTER属性查询。
Filter属性是Dynaset和Snapshot对象才具备的,所以也只能适用于这两者,不能用于Table。
Filter是用来过滤数据的,只要我们给定过滤条件就可以将所需的记录筛选出来。
需要说明的是,我们需要将以Filter属性筛选出来的数据集打开才能对其操作。
例如:set dy1=db.createDynaset(”demo”)dy1.filter=”姓名like ’刘*’”set dy2=dy1.createDynaset()3.用FIND方法查询。
FIND适用于Dynaset和Snapshot对象,有Findfirst和Findnext两个方法,每次查询到一个记录。
例如:set dy=db.createDynaset(”demo”:)s=”工资>160 and姓名like ’刘*’”dy.findfirst sdy.findnext s4.用SQL查询。
SQL是一种结构化数据查询语言,SQL也只能适用Dynaset和Snapshot数据集对象,这种方法是根据SQL条件生成一个数据集对象。
例如:s=”select * from demo where 姓名like ’刘*’”set dy=db.createDynaset(s)〖注〗:本文中的db为数据库对象,打开方式为:例如:set db=OpenDatabase(”C:\VB\SAMPLE.MDB”)。
谈谈VB的数据库编程方式成都郑剑敏VB全称Visual Basic,是微软公司推出的基于Basic语言的可视化编程环境,以其简单易学功能强大而倍受广大电脑爱好者的青睐。
VB的数据库编程方面按其难易程度可分为三类(由易到难);●使用数据库控制项和绑定控制项●使用数据库对象变量进行编程●直接调用ODBC2.0API在使用VB进行数据库编程时,通常,会首先选择三种基本方法之一来进行数据库应用程序的方案设计, 现在就将以上三种设计方法的适应范围及其优缺点进行一个比较。
1 使用数据库控制项和绑定控制项1.1 优点它是三种方法中编码量最小的不必了解CDBC2.0API的细节允许使用标准的和第三方厂商制订的控制项简化了错误处理支持所有的动态集方法及属性1.2 缺点不能存取快照对象(snapshop)对象或表格对象(都属于记录集对象)不能存取数据库集合,比如表定义(TableDefs)字段(Fieds),索引( Indexes)及查询定义(QueryDefs) 只能存取部分ODBC2.0管理函数不能进行真正的事务处理有限的错误诊断功能1.3 应用对中小规模的数据库表(通常少于一千条记录)只进行简章的浏览操作基本SQL查询所对应的结果集长度有限(通常结果集的记录数小于一百, 这些记录从一个或两个长度有限的表中检索出来)应用程序的数据输入/输出项较少(通常只涉及一个或两个长度有限的表、并且表中的字段数在10个左右且不具有关系完整性限制2 使用数据库对象变量进行编程2.1 优点可以在程序中存取ODBC2.0的管理函数可以控制多种记录集类型:Dynaset、Snapshop及Table记录集合对象可以存取存储过程和查询动作可以存取数据库集合对象,例如TableDefs、Fields、Indexes及QueryDefs具有真正的事务处理能力, 包括启动事务( Begintrans) 、提交事务(CommitTrans)及回滚事务(Rollback)2.2 缺点比使用数据控制项的方法编码量较大只能进行间接的错误处理和错误恢复对每个数据库操作没有细粒度的控制对结果集和包含结果集的内丰资源的操作受到限制同直接使用ODBC2.0API函数的方法相比性能较低2.3 应用应用程序需要在执行期间动态地建立表、字段及索引应用程序涉及同步更新几张表(但在逻辑上保持一致性)的复杂事务应用程序使用结果集而不是Dynaset的窗体(FORMS),例如Snapshots或Tables,这里是设计要考虑的关键应用程序的表非常大,多于1000条记录应用程序具有复杂的数据输入/输出项,它涉及许多内部相关的字段并且包括数据库参照完整性或一致性规则应用程序需要执行一些额外的操作和对结果集的查询后处理, 尤其是需要很高的数据格式化显示应用程序需要利用复杂的ODBC管理功能以选择、配置、校验及建立各种数据源应用程序需要在执行期间“显示”数据库的基本结构应用程序需要使用复杂的多码索引方式来检索或更新记录3 直接调用ODBC2.0API3.1 优点可以直接参与结果集的开发、管理及规范化对结果集游标提供了更多的控制,并且提供了更多的游标类型和执行动作能够确定ODBC驱动程序及SQL的一致性级别可以更好地控制Windows的执行调度及资源利用其他方面同其他方法差不多,因此这种方法很可能具有最好的性能3.2 缺点较其他两种方法需要大量的代码代码复杂并且要求程序员具有编制API调用的经验在网络上Visual Basic运行期间库的错误处理缺乏安全性,因此代码运行期间出现的错误所造成的后果会非常严重3.3 应用如果系统环境为客户机/服务器模式下的大规模多用户环境,那么应用程序必须都能够准确地解决可能出现的系统错误和失败应用程序强调资源使用,这里如何对内存、网络服务器资源进行直接控制是首要的考虑因素应用程序使用超大规模数据库,例如数据库表可能包含几万或几十万条记录VB访问数据库方法简介南京河海大学陈鹏Visual Basic(简称VB)是一种可视化的、事件驱动型的Windows应用程序开发工具,它在GUI设计、绘图、制表、运算、通信和多媒体开发方面都具有简单易行、功能强大等优点,所以越来越受到开发人员的亲睐。
同时,VB在数据库开发方面也具有Foxpro所远不能及的强大功能。
VB能够读取和访问Access、Excel、DbaseX、Foxpro、Btrieve和ODBC等多种数据库,并能利用VB自身所带的数据库引擎创建Access数据库。
所以VB在管理信息系统(MIS)的开发和建设方面得到了是益广泛的应用。
现在,笔者就VB应用数据库的一些方法作一简单的介绍。
VB访问数据库通常有三种途径:第一,通过数据库控制控件Data Control访问;第二,通过VB提供的数据库对象变量编程访问;第三,通过ODBC接口访问ODBC API函数。
在这三种方法中,第一种方法操作起来最方便、灵活、易于掌握,同时也最能体现Visual Basic面向对象的特色,故这里以Foxpro2.5的数据库为例,介绍数据库控制控件(Data Control)访问数据库的方法与步骤:一、在Form窗口中加入Data Control控件用鼠标在工具窗口的Data Control控件按钮上双击左键,该对象即出现在Form窗口的中间(控件名为Data1),用鼠标调整好控件的大小及位置。
如工具箱中无此控件,可打开主菜单的Tools/Custom,在列表中选中Microsoft Data Control复选框,确认后即可将此控件加入到工具箱中去。
二、设置联接库用鼠标单击Data1,按下F4,打开属性窗口,设置Connect属性为Foxpro2.5,设置DatabaseName 为c:\foxprow\student.dbf(假设磁盘上已有这个文件)。
三、加入字段显示、编辑控件(数据库捆绑控件)在Form窗口中加入DGrid控件,如不在此控件,可打开主菜单Tools/Custom,在列表中选择Apex Data BroundGrid复选框,确认后即可向工具箱中加入此控件。
在Form窗口中单击选中此控件(DGrid1),按下F4打开属性窗口,设置Datasource属性为Data1,在Form窗口中用鼠标右键单击控件DGrid1,选择Retrieve Fields;再用鼠标右键单击控件DGrid1,选择Edit,用鼠标调整控件及有关字段大小;再用鼠标右键单击控件DGrid1,选择Properties (属性),在弹出窗口中,选择Colums标签,在下拉列表中选Colum1,将Caption属性改为“学号”,选择Colum2,Caption属性改为“姓名”,选择Colum3、4将Caption属性改为“性别”、“专业”,按下“确定”按钮。
再向Form窗口中加入一个按钮控件,将Caption属性设置为“退出”,双击该控件(Command1),在代码窗口中写入“END”,存盘。
此时,一个具备数据库读写、浏览功能的应用程序就建立了,按下F5运行,通过单击Data1的各按钮即可看出当前记录的变化情况。
在此基础上,我们还可以借助数据库控制控件的有关属性和方法进行更灵活的操作和控制。
1、设置Data1.Visiable=False’将控件设为不可见2、将按钮Command2,3,4,5,6,7的Caption属性分别设置为“追加”、“首记录”、“上一条”、“下一条”、“尾记录”、“删除”,双击各按钮,分别写入事件代码:Sub Command1-Click() ’关闭应用程序EndEnd SubSub Command2-Click() ’追加记录Data1.Recordset .AddnewData1.Recordset .UpdateData1.Recordset .MoveLastEnd SubSub Command3-Click() ’移向首记录Data1.Recordset .MoveFirstEnd SubSub Command4-Click() ’移向上一条记录Data1.Recordset .MovePreviusIf Data1.Recordset .Bof ThenData1.Recordset .MoveFirstEnd IfEnd SubSub Command3-Click() ’移向尾记录Data1.Recordset .MoveLastEnd SubSub Command4-Click() ’移向下一条记录Data1.Recordset .MoveNextIf Data1.Recordset .Eof ThenData1.Recordset .MoveLastEnd IfEnd Sub除此之外,数据库控制控件还有Bookmark、RecordCount等许多属性与方法,能对数据库进行各种方便的操作。