回 帖 发 新 帖 刷新版面

主题:[转帖]vb常用代码


作者:Cooly
出处:http://search.csdn.net/expert/topic/51/5101/2003/3/20/1555609.htm

'=======================================================
'一、如何使用ADODC控件绑定数据到DataGrid和DataList
'=======================================================

Public isDB As Boolean

Private Sub Form_Load()
Dim connStr, AccessLocation As String
AccessLocation = "C:\db1.mdb"
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & AccessLocation & ";Persist Security Info=False"
Adodc1.ConnectionString = connStr
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select * from tableabc"
Adodc1.Refresh
For i = 0 To Adodc1.Recordset.Fields.Count - 1
    List1.AddItem Adodc1.Recordset.Fields(i).Name
Next
Set DataList1.DataSource = Adodc1
DataList1.DataField = "Col1"
DataList1.BoundColumn = "Col1"
Set DataList1.RowSource = Adodc1
DataList1.ListField = "Col1"

Adodc1.Recordset.MoveFirst
End Sub

Private Sub List1_Click() '选择DataGrid中显示的字段
Dim sql, sql1 As String

sql = "select "
For i = 0 To List1.ListCount - 1
If List1.Selected(i) Then
    If Trim(sql1) = "" Then
       sql1 = List1.List(i)
    Else
       sql1 = sql1 & ", " & List1.List(i)
    End If
End If
Next

If Trim(sql1) = "" Then
   sql1 = "*"
End If

sql = sql & sql1 & " from tableabc"

Adodc1.RecordSource = sql
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
End Sub



'========================================================
'二、如何对文件进行二进制读写
'========================================================
Dim getValue() As Byte

Private Sub Command1_Click()
Open "C:\1.cmd" For Binary Access Write As #2
     Put #2, , getValue()
Close #2

End Sub

Private Sub Form_Load()

Open "C:\command.com" For Binary Access Read As #1
      ReDim getValue(FileLen("C:\command.com"))
      Get #1, , getValue
Close #1
End Sub

'========================================================
'三、字符串处理算法(1)
' 求出已知字符串中出现频率最高的字串内容及出现次数
'========================================================
Private Sub Command1_Click()
Dim a, b As String
Dim i As Long
Dim c, t As Long

c = 0
a = "abcdefcdedgcdeethcdenbicde"
For i = 1 To Len(a)
    t = 0
    b = a
    If i = Len(a) - 2 Then Exit For
    Do Until InStr(b, Mid(a, i, 3)) = 0
       b = Right(b, Len(b) - InStr(b, Mid(a, i, 3)))
       t = t + 1
    Loop
    If t > c Then
       c = t
    End If
Next
MsgBox c
End Sub

'========================================================
'四、DriveListBox,DirListBox,FileListBox三个控件的使用
'========================================================

Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub

Private Sub File1_Click()
Text1.Text = File1.Path & "\" & File1.FileName
End Sub

'========================================================
'五、如何对目录进行操作 (使用FSO)
'========================================================

Private Sub Command1_Click()
Dim fso As Object
Dim SourcePath, TargetPath As String
SourcePath = Text1.Text
TargetPath = Text2.Text
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(TargetPath) Then
   fso.CopyFolder SourcePath & "*.*", TargetPath
   fso.CopyFile SourcePath & "*.*", TargetPath
Else
   fso.CreateFolder (TargetPath)
   fso.CopyFolder SourcePath & "*.*", TargetPath
   fso.CopyFile SourcePath & "*.*", TargetPath
End If
Set fso = Nothing
MsgBox "复制完成"
End Sub

Private Sub Command2_Click()
Dim fso As Object
Dim TargetPath As String
TargetPath = "D:\Test"
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFolder TargetPath, True
Set fso = Nothing
MsgBox "删除成功"
End Sub

'========================================================
'六、如何取出DataGrid控件选定行的内容
'========================================================

Private Sub DataGrid1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
DataGrid1.Row = DataGrid1.RowContaining(Y)
MsgBox DataGrid1.Columns(0).Text
End Sub

Private Sub Form_Load()
Adodc1.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=test;Data Source=SERVER"
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select * from test"
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
DataGrid1.AllowUpdate = False
End Sub

'========================================================
'七、如何ADODB对象绑定DataGrid控件
'========================================================

Private Sub Form_Load()
Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset

Set conn = New ADODB.Connection
Set rst = New ADODB.Recordset
conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=test;Data Source=SERVER"
conn.Open , "sa"

rst.CursorLocation = adUseClient

rst.Open "select * from table1", conn, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rst

End Sub

'========================================================
'八、日期函数的使用以及使用FileExists判断文件是否存在
'========================================================
Private Sub Command1_Click()
If IsNumeric(Text1.Text) And InStr(Text1.Text, ".") = 0 And InStr(Text1.Text, "-") = 0 Then
   If CLng(Text1.Text) > 0 And CLng(Text1.Text) <= 12 Then
      MsgBox DateDiff("d", DateSerial(Year(Now()), Text1.Text, 1), DateAdd("m", 1, DateSerial(Year(Now()), Text1.Text, 1)))
   Else
      MsgBox "Error"
   End If
Else
   MsgBox "Error, Wrong Value"
End If
End Sub

Private Sub Command2_Click()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FileExists("C:\command.com") = True Then
       MsgBox "C:\Command.com 文件已存在"
    Else
       MsgBox "C:\Command.com 文件不存在"
    End If

Set fso = Nothing
End Sub

'========================================================
'九、十进制与二进制的简单算法。
'========================================================

Private Sub Command1_Click()
Dim a, b As Long
Dim c As String
a = Text1.Text
Do
   If a = 0 Then Exit Do
   If a > 1 Then
      b = a Mod 2
   Else
      b = a
   End If
   c = CStr(b) & CStr(c)
   a = a \ 2
Loop
Text2.Text = c
End Sub

Private Sub Command2_Click()
Dim a, b As String
Dim i, c, d As Long
a = Text2.Text

For i = 1 To Len(a)
    c = CLng(Mid(a, i, 1))
    If c = 1 Then
       d = d + 2 ^ (Len(a) - i)
    End If
Next
Text3.Text = d
End Sub


回复列表 (共1个回复)

沙发



'========================================================
'十七、在容器中移动控件
'========================================================
Public isMove As Boolean
Public bX, bY As Long

Private Sub Form_Load()
isMove = False
End Sub

Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
   isMove = True
   bX = X
   bY = Y
End If
End Sub

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 And isMove Then
   Label1.Move X + Label1.Left - bX, Y + Label1.Top - bY
End If
End Sub

Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
isMove = False
End Sub

'========================================================
'十八、如何在运行程序的时候获得外部参数
'========================================================
Private Sub Form_Load()
Dim ParaArray() As String
Dim GetString As String
Dim I As Long
GetString = Trim(Command())
If InStr(GetString, "/") = 1 Then
   If Len(GetString) > 1 Then
      GetString = Right(GetString, Len(GetString) - 1)
      ParaArray = Split(GetString, "/", -1, vbTextCompare)
      For I = 0 To UBound(ParaArray())
          MsgBox "Parameter " & I + 1 & ": = " & Trim(ParaArray(I))
      Next
   Else
      MsgBox "Empty Parameter!"
   End If
Else
   If InStr(GetString, "/") = 0 Then
      MsgBox "No Parameter! "
   Else
      MsgBox "Wrong Format"
   End If
End If
End Sub

'========================================================
'十九、注册表的操作
'========================================================

Option Explicit
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_PERFORMANCE_DATA = &H80000004
Const HKEY_CURRENT_CONFIG = &H80000005
Const HKEY_DYN_DATA = &H80000006
Const REG_NONE = 0
Const REG_SZ = 1
Const REG_EXPAND_SZ = 2
Const REG_BINARY = 3
Const REG_DWORD = 4
Const REG_DWORD_BIG_ENDIAN = 5
Const REG_MULTI_SZ = 7

Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long


Private Sub Command1_Click()
Dim hKey As Long
Dim DSNName, strDriver, strServer, strDatabase, strLastUser, strDBType As String

DSNName = "myodbc"

strDriver = "C:\\WINNT\\System32\\sqlsrv32.dll" 'SQL Server的驱动,如果用VFP可以改成相应的文件
strServer = "SERVER"
strDatabase = "test"
strLastUser = "sa"
strDBType = "SQL Server"

RegCreateKey HKEY_LOCAL_MACHINE, "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", hKey
RegSetValueEx hKey, DSNName, 0, REG_SZ, ByVal strDBType, Len(strDBType) + 1

RegCreateKey HKEY_LOCAL_MACHINE, "SOFTWARE\ODBC\ODBC.INI\" & DSNName, hKey
RegSetValueEx hKey, "Driver", 0, REG_EXPAND_SZ, ByVal CStr(strDriver), Len(strDriver) + 1
RegSetValueEx hKey, "Server", 0, REG_SZ, ByVal CStr(strServer), Len(strServer) + 1
RegSetValueEx hKey, "Database", 0, REG_SZ, ByVal CStr(strDatabase), Len(strDatabase) + 1
RegSetValueEx hKey, "LastUser", 0, REG_SZ, ByVal CStr(strLastUser), Len(strLastUser) + 1
End Sub

'========================================================
'二十、TreeView的使用,及选中其中指定的节点
'========================================================
Private Sub Command1_Click()
Dim nodeY As Node
For Each nodeY In TreeView1.Nodes
    If CStr(Trim(nodeY.Text)) = "ff" Then
       nodeY.Selected = True
       TreeView1.SetFocus
       Exit For
    End If
Next
End Sub

Private Sub Form_Load()
Rs1.CommandType = adCmdText
Rs1.RecordSource = "select distinct biao,zu from test order by zu"
Rs1.Refresh
Dim Rs As ADODB.Recordset
Set Rs = Rs1.Recordset

    Set nodX = TreeView1.Nodes.Add(, , "r", "报表组  ")
    
    i = 0
    Dim TempString As String
    Dim TempKey As Long
    Do Until Rs.EOF Or Rs.BOF
     If TempString = Rs!zu Then
        Set nodeX = TreeView1.Nodes.Add("Z" & TempKey, tvwChild, "B" & i, Rs!biao)
     Else
        Set nodX = TreeView1.Nodes.Add("r", tvwChild, "Z" & i, Rs!zu)
        Set nodeX = TreeView1.Nodes.Add("Z" & i, tvwChild, "B" & i, Rs!biao)
        TempString = Rs!zu
        TempKey = i
     End If
        Rs.MoveNext
        i = i + 1
    Loop
End Sub

'========================================================
'二十一、Word对象的使用(查找Word文档中是否包含指定关键字,
'以及在指定位置插入字符串)
'========================================================
Private Sub Command1_Click()
Dim wrdApp As Object
Dim f, fso As Object
Dim filepath As String
Dim Keywords As String

filepath = "c:\words"
Keywords = "abc"

Set fso = CreateObject("Scripting.FileSystemObject")

Set folders = fso.GetFolder(filepath)

I = 0
For Each f In folders.Files
    If LCase(Right(f.Name, Len(f.Name) - InStrRev(f.Name, "."))) = "doc" Then
       Set wrdApp = CreateObject("Word.Application")
       wrdApp.Visible = False
       wrdApp.Documents.Open FileName:=filepath & "\" & f.Name

       If InStr(wrdApp.ActiveDocument.Content.Text, Keywords) <> 0 Then
          MsgBox f.Name
       End If
       
       wrdApp.Quit
       
    End If
Next


Set wrdApp = Nothing

End Sub

Private Sub Command2_Click()
Dim wrdApp As Object
Dim wrdRows, wrdCols, I As Long
Dim insText As String

wrdRows = 10: wrdCols = 10
insText = "TEST"

Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = False
wrdApp.Documents.Open FileName:="C:\words\1.doc"

For I = 1 To wrdRows
    wrdApp.ActiveDocument.Content.insertAfter vbCrLf
Next

wrdApp.ActiveDocument.Content.GoTo What:=3, Which:=2, Count:=wrdRows
wrdApp.ActiveDocument.Content.insertAfter Space(wrdCols) & "PPPPPPPPPPPPP"

wrdApp.ActiveDocument.Save
wrdApp.Quit

Set wrdApp = Nothing

End Sub


更多请看原贴:http://expert.csdn.net/Expert/topic/1555/1555609.xml?temp=.3376276

我来回复

您尚未登录,请登录后再回复。点此登录或注册