博文

用 INNER JOIN语法联接多个表建记录集 (2005-12-12 00:01:00)

摘要:用 INNER JOIN语法联接多个表建记录集 多表联接建立记录集是十分有用的,因为某些情况下,我们需要把数字数据类型显示为相应的文本名称,这就遇到了多表联接建立记录集的问题。比如作一个会员注册系统,共有五个表,会员信息数据表member、会员身份表MemberIdentity、会员权限表MemberLevel、会员类别表MemberSort和会员婚姻状况表Wedlock。如果想把会员注册信息全部显示出来,肯定要将这四个表连起来,否则大家看到的某些会员信息可能只是数据编号。    以会员类别表来说,在其数据表中,1代表普通会员,2代表高级会员,3代表终身会员,在显示时,如果不将会员类别表与会员详细数据表相关联,那么假如我们现在看到的是一名普通会员的注册信息,我们只能看到其类别为1,而谁又会知道1代表的是普通会员呢?所以要将会员类别表与会员详细数据表相关联,关联后,1就显示为普通会员,2就显示为高级会员,3就显示为终身会员,这样多好?同理,其它两个表也要与会员详细数据表相关联才能把数据编号显示为相应的名称。        前天制作网站后台时遇到此问题,在面包论坛、狂迷俱乐部、蓝色理想、和5D多媒体论坛发了贴子求救,都没有获得答案,只好自己研究,花了两天时间终于成功,现将其写成教程供大家分享,希望大家少走弯路。    本教程是把五个表联在一起,如果愿意,您可以将更多的表联在一起,方法大同小异啦~        步骤一:用Access软件建立一个名为Member的数据库,在其中建五个表,分别为:会员信息数据表member、会员身份表MemberIdentity、会员权限表MemberLevel、会员类别表MemberSort和会员婚姻状况表Wedlock。        ●会员信息数据表member:    MemberID:自动编号,主键(ID号)    MemberSort:数字(会员类别)    MemberName:文本,会员姓......

阅读全文(344) | 评论:0

精妙SQL语句介绍(2005-12-11 22:24:00)

摘要:精妙SQL语句介绍 如何从一位菜鸟蜕变成为高手,灵活使用的SQL语句是必不可少的。本文收集了部分比较经典,常用的SQL语句供大家参考,希望对大家有所帮助。   说明:复制表(只复制结构,源表名:a 新表名:b)     SQL: select * into b from a where 1<>1   说明:拷贝表(拷贝数据,源表名:a 目标表名:b)     SQL: insert into b(a, b, c) select d,e,f from b;   说明:显示文章、提交人和最后回复时间     SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b   说明:外连接查询(表名1:a 表名2:b)     SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c   说明:日程安排提前五分钟提醒     SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5     说明:两张关联表,删除主表中已经在副表中没有的信息   SQL:      delete from info where not exists ( select * from infobz where info.infid=infobz.infid   说明:--   SQL:      SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE    FROM TABLE1,    (SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE    FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND    FROM TABLE2    WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X,    (SE......

阅读全文(354) | 评论:0

发现拖(Drap)过来的信息(2005-12-02 09:21:00)

摘要:要让您的程序支持从其他程序 (如:资源管理器或浏览器)中拖过来的信息,首先要找到拖过来数据的Format 和组织情况,以下的代码可以让您迈出第一步:设置 FORM 的 OLEDropMode 为自动:Private Sub Form_OLEDragOver(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer)For i = 1 To 255 ' 如果在该范围内没有,可以扩大范围!If Data.GetFormat(i) ThenDebug.Print Data.GetData(i) '数据内容Debug.Print I 'Format 编号End IfNextEnd Sub然后拖几个东东到 FORM 中去。可以发现, 超连接的有关信息 Format 为 1,而文件的 Format 为 15。。。......

阅读全文(2845) | 评论:0

关于天文数字十进制与十六进制间的转换(2005-11-17 21:35:00)

摘要:关于天文数字十进制与十六进制间的转换 对于一般的整型数字,16进制与10进制 间的转化可以用CLNG(),HEX()函数解决,但遇上天文数字,这些函数就无能为力了。下面是笔者写的几个函数,演示了天文数字计算中的一些技巧。 Dim largehex As String, largedec As String, start As Long, Y(20) As String '预备函数Function sums(ByVal X As String, ByVal Y As String) As String ' sum of two hugehexnum(两个大数之和)Dim max As Long, temp As Long, I As Long, result As Variantmax = IIf(Len(X) >= Len(Y), Len(X), Len(Y))X = Right(String(max, "0") & X, max)Y = Right(String(max, "0") & Y, max)ReDim result(0 To max)For I = max To 1 Step -1result(I) = Val(Mid(X, I, 1)) + Val(Mid(Y, I, 1))NextFor I = max To 1 Step -1temp = result(I) \ 10result(I) = result(I) Mod 10result(I - 1) = result(I - 1) + tempNextIf result(0) = 0 Then result(0) = ""sums = Join(result, "")Erase result End Function Function multi(ByVal X As String, ByVal Y As String) As String 'multi of two huge hexnum(两个大数之积)Dim result As VariantDim xl As Long, yl As Long, temp As Long, I As Longxl = Len(Trim(X))yl = Len(Trim(Y)) ReDim result(1......

阅读全文(252) | 评论:0

签名(2005-11-11 01:44:00)

摘要:[img*]http://ip.happybobby.com/sign.png[/img][img*]http://www.hotik.com/sign.png[/img][img*]http://www.u9cn.com/1.php[/img][img*]http://www.u9cn.com/2.php[/img][img*]http://www.u9cn.com/3.php[/img][img*]http://www.u9cn.com/4.php[/img][img*]http://www.cz88.net/ip/pic.aspx[/img][img*]http://www.cz88.net/ip/pic_1.aspx[/img][img*]http://www.cz88.net/ip/pic_2.aspx[/img][img*]http://www.cz88.net/ip/pic_3.aspx[/img][img*]http://www.cz88.net/ip/pic_4.aspx[/img][img*]http://www.cz88.net/ip/pic_5.aspx[/img][img*]http://www.cz88.net/ip/pic_6.aspx[/img][img*]http://www.cz88.net/ip/pic_7.aspx[/img][img*]http://www.cz88.net/ip/pic_8.aspx[/img][img*]http://www.cz88.net/ip/pic_9.aspx[/img][img*]http://www.cz88.net/ip/pic_11.aspx[/img][img*]http://www.cz88.net/ip/pic_12.aspx[/img][img*]http://www.cz88.net/ip/pic_13.aspx[/img][img*]http://www.cz88.net/ip/pic_14.aspx[/img] ......

阅读全文(377) | 评论:0

Win XP的另类重启技巧(2005-11-02 18:09:00)

摘要: Win XP的另类重启技巧       当您的计算机死机、停止响应等,您不得不用“Reset”或“Ctrl+Alt+Del”重新启动来解决问题,如果您觉得这样还很麻烦的话,可以考虑用下面的方法来让计算机自动重启。   1、系统死锁时自动重启   单击“开始→运行”,键入“REGEDIT”并回车,打开注册表编辑器,找到并展开[HKEY_LOCAL_MACHINESystemCurrentControlSet CrashControl ]分支,在右侧窗口中找到“AutoReboot”(如果没有,我们可以新建一个)键,将其值修改为“1”。退出注册表编辑器并重新启动一次计算机,以后系统死机时就会自动重启。   2、“资源管理器”崩溃时自动重启   我们还可以在“资源管理器”崩溃(桌面图标、任务栏无法显示,鼠标消失,不能使用Alt+Tab组合键切换窗口等等)时,让计算机自动重启。   打开注册表编辑器,依次展开[HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionWinlogon ]分支,在右侧窗口找到“AutoRestartShell”(如果没有,我们可以新建一个)键,将其值修改为“1”。重新启动计算机设置即生效。......

阅读全文(3295) | 评论:0

WinXP提速技巧五则(2005-11-02 18:06:00)

摘要: WinXP提速技巧五则       Windows XP现在已经相当普及了,在使用它的过程中,你是否感觉在速度上很多地方还没有Windows 9x系统快呢?比如访问网上邻居、开机关机等,下面我们就来逐个提升它们的速度。      1、加速网上邻居    在Windows XP中访问网上邻居是相当恼人的,系统会搜索自己的共享目录和可作为网络共享的打印机以及计划任务中和网络相关的计划任务,然后才显示出来,显然这样速度就会比Windows 9x中慢很多。其实这些功能我们并没有使用上,与其不用还不如删除它们,这样速度就会明显加快。打开注册表编辑器,找到HKEY_LOCAL_MACHINE/sofeware/Microsoft/Windows/CurrentVersion/ Explore/RemoteComputer/NameSpace,删除其下的{2227A280-3AEA-1069-A2DE08002B30309D}(打印机)和{D6277990-4C6A-11CF8D87- 00AA0060F5BF}(计划任务),重新启动电脑,再次访问网上邻居,你会发现快了很多。     2、减少开机滚动条时间    每次启动Windows XP,蓝色的滚动条都要走上好多次,其实这里我们也可以把它的滚动时间减少,以加快启动速度。打开注册表编辑器,找到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory ManagementPrefetchParameters,在右边找到EnablePrefetcher主键,把它的默认值3改为1,这样滚动条滚动的时间就会减少。      3、加快开机速度    在XP中关机时,系统会发送消息到运行程序和远程服务器,告诉它们系统要关闭,并等待接到回应后系统才开始关机。加快开机速度,可以先设置自动结束任务,首先找到HKEY_CURRENT_USERControl&n......

阅读全文(2809) | 评论:0

在关机或Logff前信息的拦截(2005-11-02 16:41:00)

摘要:在关机或Logff前信息的拦截 如果我们关机或Logoff时,我们的程序有时会因而无法按正常程序结束,一般我们会在Form的Unload中一段程序结束时要做什么事,但是,如果使用者直接用开始功能菜单的关机,会使UnLoad的部份没有做到,我们现在就想办法来拦截关机(或Logoff)时的信息。一般来说,关机或Logff后,Windows会传依序送出WM_QUERYENDSESSION的信息给每个Process,如果中间有一个Process不能顺利结束(例如:Word修改后未存档,而出现是否存档,但我们按取消),这时该信息执行的结果会传回False(0),这时Windows也就不再继续送WM_QUERYENDSESSION给下一个Proccess。反之,如果所有的Process都可以顺利结束(也就是每个送出的WM_QUERYENDSESSION都传回True),那才代表以以顺利结束。不管WM_QUERYENDSESSION最后的结果是可以顺利结束或不能顺利结束,Windows会再送一个WM_ENDSESSION的信息给所有的Process,而wParam的内容便是指出是否可以顺利结束(True菜单可以,False菜单不行,在vb中则Check wParam = 0 菜单False , 0菜单True),说到这里大概就知道该如何做啦,程序如下:'以下在FormPrivate Sub Form_Load()Dim ret As Long'记录原来的Window Procedure的位址preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)'设定form的window Procedure到wndprocret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf wndproc)End SubPrivate Sub Form_Unload(Cancel As Integer)Dim ret As Long'取消Message的截取,而使之又只送往原来的Window Procedureret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)'这里只是要看看用关机的方式结束程序时,会不会执行到这里Dim fno As Longfno = Free......

阅读全文(2369) | 评论:0

怎样关闭一个正在运行的程序(2005-11-02 16:39:00)

摘要:怎样关闭一个正在运行的程序 你可以使用API函数FindWindow和PostMessage去寻找指定的窗口,并关闭它。下面的例子教给你怎样找到并关掉一个Caption为“Caluclator”的程序。Dim winHwnd As LongDim RetVal As LongwinHwnd = FindWindow(vbNullString, "Calculator")Debug.Print winHwndIf winHwnd <> 0 ThenRetVal = PostMessage(winHwnd, WM_CLOSE, 0&, 0&)If RetVal = 0 ThenMsgBox "置入消息错误!"End IfElseMsgBox "Calculator没有打开!"End If为了让以上的代码工作,你必须在模块文件中什么以下API函数:Declare Function FindWindow Lib "user32" Alias _"FindWindowA" (ByVal lpClassName As String, _ByVal lpWindowName As String) As Long Declare Function PostMessage Lib "user32" Alias _"PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _ByVal wParam As Long, lParam As Any) As Long Public Const WM_CLOSE = &H10......

阅读全文(3762) | 评论:1

为 ListBox 设定水平卷动轴(2005-11-02 16:34:00)

摘要:如何为 ListBox 设定水平卷动轴?- -VB 的 ListBox 并没有水平卷动轴的功能,如果遇到某一个资料项很长时, 使用者就无法看到这一个资料项的所有内容,问如何设定水平卷动轴给 ListBox? 可利用 SendMessage 传送 LB_SETHORIZONTALEXTENT 讯息给 ListBox,此一讯息的作用就是要求ListBox 设定水平卷动轴, 细节如下  1. API 的宣告:     Const LB_SETHORIZONTALEXTENT = &H194    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _            (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _            lParam As Any) As Long 2. 程式范例:   ' List1 为 ListBox 的名称   Call SendMessage(List1.hwnd, LB_SETHORIZONTALEXTENT, _        水平卷动轴的宽度, ByVal 0&) 特别注意:以上的水平卷动轴宽度的单位是 pixel(像素)。......

阅读全文(3378) | 评论:0