一. 模块
1.数据库连接
Connectstring="provider=sqloledb;server=192.168.26.25;UID=sa;PWD=123;filedsn=studentinfo.dsn"
数据库连接的两种方法:
http://blog.csdn.net/wang379275614/article/details/7859398
2.split()函数
Split()函数是一个操作字符串的函数,可以返回一个下标从零开始,指定子字符串的一维数组。 语法为:Split(expression[, delimiter[, count[, compare]]])
expression 必需的。包含子字符串和分隔符的字符串表达式。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。
delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的 expression字符串。
count 可选的。要返回的子字符串数,–1表示返回所有的子字符串。
compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。
在这里,delimiter默认为空格字符,如果SQL语句是“SELECT*FROM……”则返回sTokens(0)=SELECT;sTokens(1)=*;sTokens(2)=FROM
二.窗体
1登录窗体
(1).Getusername
随着系统安全性的加强,每个系统里越来越多不同的帐号登录。假如你正在开发一个上网安全软件,让不同的用户有不同的上网权限,这样就需要识别当前的用户是什么帐号登录了,然后再作出权限分配。还有出错时,也需要对当前帐号进行记录下来,因为不同的帐号有不同的权限,有些磁盘是不允许操作的。面对这些需求,就需要使用函数GetUserName。
GetUserName概述
声明
VB声明
Declare Function GetUserName Lib "advapi32.dll " Alias "GetUserNameA " (ByVal lpBuffer As String, nSize As Long) As Long
定义
GetUserName(
lpBuffer:PChar; {缓冲区}
var nSize:DWORD {缓冲区大小}
参数表
参数 类型及说明
lpBuffer String,一个字串缓冲区,预先初始化成由nSize指定的长度。它将用于容纳用户名,是获取名称缓冲区。
nSize Long,初始化成lpBuffer的长度。返回以后,它会包含载入lpBuffer的字符数量 ,是缓冲区的大小和返回帐号的大小。
注解
1、lpBuffer和nSize需要赋初值。
2、库名:advapi32.dll
3、分类:硬件与系统函数
4、Long,TRUE(非零)表示成功,否则返回零。会设置GetLastErrorlpBuffer(String),一个字串缓冲区,预先初始化成由nSize指定的长度。它将用于容纳用户名
nSize Long,初始化成lpBuffer的长度。返回以后,它会包含载入lpBuffer的字符数量
(2).Set mrc = ExecuteSQL(txtSQL, MsgText)
是自定义函数
ExecuteSQL 一定是执行SQL语句(英文的意思是这样的-一般按照用途定义名字的)
里面的两个参数 txtSQL 是指用来执行的SQL语句比如:select * from 表
MsgText参数 指的是实行完SQL语句后的弹出框 是成功了还是失败了之类的
2.父窗体-frmMain
Me.Left = GetSetting(App.Title, "Settings","MainLeft", 1000)
Me.Left = GetSetting(App.Title, "Settings","MainLeft", 1000)
Function GetSetting(AppName As String,Section As String, Key As String, [Default]) As String
VBA.Interaction 的成员
从 Windows 注册表的应用程序项中返回一个关键字设置值。
app.title 工程名
settings 字符串表达式,包含区域名称,要求该区域有注册表项设置。
mainleft 字符串表达式,返回注册表项设置的名称。
default 默认值
2.子窗体
(1).添加窗体
机制:先删除,再添加
代码理解:
If Not (mrc.EOF And mrc.BOF) Then '数据库中不为空
mrc.MoveFirst
End If
Mrc!相当于数据库
While (mrc.EOF = False)
comboSID.AddItem mrc!student_ID
mrc.MoveNext
Wend
(2). 修改窗体
Private SubcmdDelete_Click()
myBookmark = mrc.Bookmark
str2$ = MsgBox("是否删除当前记录?", vbOKCancel, "删除当前记录")
If str2$ = vbOK Then '$变长字符型
mrc.MoveNext '用movenext先测试是否要删除的记录为最后一条记录,
If mrc.EOF Then '如果为最后,则先把当前记录移动到第一个
mrc.MoveFirst '然后将书签移动到第一个
myBookmark = mrc.Bookmark '找到刚才标记的书签
mrc.MoveLast '然后在移动到最后
mrc.Delete '删除
mrc.Bookmark = myBookmark '找回刚才标记的书签 '
Call viewData
Else
myBookmark = mrc.Bookmark
Call viewData '显示记录
End If
Else
mrc.Bookmark = myBookmark
Call viewData
End If
End Sub
bookmark是标当前dbgrid的位置,这里的作用就是当点删除时,先记录下当前dbgrid的位置,如果确定删除,判断是不是到最后了,如果是就回到第一行,删除,位置留在第一行,如果不是最后则删除数据后保持bookmar在当前位置;如果没有执行删除,则bookmark也保持在当前位置不变
mrc是一个有指针(bookmark属性存储),动作(movefirst、delete等)的模块,通过这个自定义的模块控制和存储bookmark实现的功能。
简单说就是记录游标的位置
mcclean为false时,处于编辑状态
(3)查询窗体:
cellalignment是单元格的对齐方式
textmatrix(row,col)可以返回第row行,第col列的数据