WEB开发网
开发学院数据库MSSQL Server 如何在视图中使用ORDER BY短语 阅读

如何在视图中使用ORDER BY短语

 2007-11-11 07:44:04 来源:WEB开发网   
核心提示: 一、API 函 数 的 声 明、 自 定 义 数 据 类 型 及 常 量 的 定 义 注 意:API 函 数 的 声 明 应 在 应 用 程 序 的 代 码 模 块 中 进 行, 且 一 条 声 明 必 须 放 在 一 行 中'API 函 数 的 声 明 Public Declare Function Fin

  一、API 函 数 的 声 明、 自 定 义 数 据 类 型 及 常 量 的 定 义

  注 意:API 函 数 的 声 明 应 在 应 用 程 序 的 代 码 模 块 中 进 行, 且 一 条 声 明 必 须 放 在 一 行 中'API 函 数 的 声 明

  Public Declare Function FindFirstFile Lib

   "kernel32" Alias "FindFirstFileA"

   (ByVal lpFileName As String,

   lpFindFileData As WIN32_FIND_DATA) As Long

  Public Declare Function FindNextFile Lib

   "kernel32" Alias "FindNextFileA"

   (ByVal hFindFile As Long, lpFindFileData

   As WIN32_FIND_DATA) As Long

  Public Declare Function FindClose Lib

   "kernel32" (ByVal hFindFile As Long) As Long

   '最大路径长度和文件属性常量的定义

  Public Const MAX_PATH = 260

  Public Const FILE_ATTRIBUTE_ARCHIVE = &H20

  Public Const FILE_ATTRIBUTE_COMPRESSED = &H800

  Public Const FILE_ATTRIBUTE_DIRECTORY = &H10

  Public Const FILE_ATTRIBUTE_HIDDEN = &H2

  Public Const FILE_ATTRIBUTE_NORMAL = &H80

  Public Const FILE_ATTRIBUTE_READONLY = &H1

  Public Const FILE_ATTRIBUTE_SYSTEM = &H4

  Public Const FILE_ATTRIBUTE_TEMPORARY = &H100

  '自定义数据类型FILETIME和WIN32_FIND_DATA的定义

  Public Type FILETIME

  dwLowDateTime As Long

  dwHighDateTime As Long

  End Type

  Public Type WIN32_FIND_DATA

   dwFileAttributes As Long

   ftCreationTime As FILETIME

   ftLastAccessTime As FILETIME

   ftLastWriteTime As FILETIME

   nFileSizeHigh As Long

   nFileSizeLow As Long

   dwReserved0 As Long

   dwReserved1 As Long

   cFileName As String * MAX_PATH

   cAlternate As String * 14

  End Type

  二、 去 掉 固 定 长 度 字 符 串 右 边 的NULL 字 符(ASCII 值 为0) 和SPACE 字 符(ASCII 值 为32)

  由 于 数 据 类 型WIN32_FIND_DATA 的cFileName 元 素 为 定 长 数 据 类 型 且 在 执 行 函 数FindFirstFile 和FindNextFile 后 会 有NULL 字 符, 因 此 需 去 掉 其 中 的 无 效 字 符。

  Public Function fDelInvaildChr

   (str As String) As String

   On Error Resume Next

   For i = Len(str) To 1 Step -1

    If Asc(Mid(str, i, 1)) < > 0 And Asc(Mid(str, i, 1)) <> 32 Then

     fDelInvaildChr = Left(str, i)

     Exit For

    End If

   Next

  End Function

  三、 遍 历 主 函 数

  参 数 说 明:

  strPathName要遍历的目录

  objList 使用VB的内部控件ListBox来存放遍历得到的路径,之所以不使用字符串数组是因为数组大小不好定义

  Public Sub sDirTraversal

   (ByVal strPathName As String, ByRef objList As ListBox)

   Dim sSubDir(200) As String

   '存放当前目录下的子目录,下标可根据需要调整

   Dim iIndex As Integer

   '子目录数组下标

   Dim i As Integer

   '用于循环子目录的查找

   Dim lHandle As Long

   'FindFirstFileA的句柄

   Dim tFindData As WIN32_FIND_DATA '

   Dim strFileName As String '文件名

   On Error Resume Next

   '初始化变量

   i = 1

   iIndex = 0

   tFindData.cFileName =

   "" '初始化定长字符串

   lHandle = FindFirstFile

   (strPathName & "\*.*", tFindData)

   If lHandle = 0 Then '查询结束或发生错误

    Exit Sub

   End If

   strFileName = fDelInvaildChr(tFindData.cFileName)

   If tFindData.dwFileAttributes = &H10 Then '目录

    If strFileName <> "." And strFileName <> ".." Then

     iIndex = iIndex + 1

     sSubDir(iIndex) = strPathName

     & "\" & strFileName '添加到目录数组

    End If

   Else

    objList.AddItem strPathName

    & "\" & strFileName

   End If

   '循环查找下一个文件,直到结束

   Do While True

    tFindData.cFileName = ""

    If FindNextFile(lHandle, tFindData) = 0 Then '查询结束或发生错误

     FindClose (lHandle)

     Exit Do

    Else

     strFileName = fDelInvaildChr(tFindData.cFileName)

     If tFindData.dwFileAttributes = &H10 Then

      If strFileName <> "." And strFileName <> ".." Then

       iIndex = iIndex + 1

       sSubDir(iIndex) = strPathName & "\" & strFileName '添加到目录数组

      End If

     Else

      objList.AddItem strPathName & "\" & strFileName

     End If

    End If

   Loop

   '如果该目录下有目录,则根据目录数组递归遍历

   If iIndex > 0 Then

    For i = 1 To iIndex

      sDirTraversal sSubDir(i), objList

    Next

   End If

  End Sub

---- 利 用 以 上 遍 历 方 法, 读 者 可 以 根 据 数 据 类 型WIN32_FIND_DATA 的dwFileAttributes、ftCreationTime、ftLastAccessTime、ftLastWriteTime 元 素 来 扩 充 文 件 查 询 功 能( 按 文 件 属 性、 创 建 日 期、 最 后 修 改 日 期、 最 后 访 问 日 期 等 不 同 条 件 的 查 询)。

  完 整 代 码 :

'''''''''''''''''''''''''''''''''''''''''''

'API函数的声明、常量、自定义数据类型

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'API函数的声明

Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long

Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long

Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'最大路径长度和文件属性常量的定义

Public Const MAX_PATH = 260

Public Const FILE_ATTRIBUTE_ARCHIVE = &H20

Public Const FILE_ATTRIBUTE_COMPRESSED = &H800

Public Const FILE_ATTRIBUTE_DIRECTORY = &H10

Public Const FILE_ATTRIBUTE_HIDDEN = &H2

Public Const FILE_ATTRIBUTE_NORMAL = &H80

Public Const FILE_ATTRIBUTE_READONLY = &H1

Public Const FILE_ATTRIBUTE_SYSTEM = &H4

Public Const FILE_ATTRIBUTE_TEMPORARY = &H100

'自定义数据类型FILETIME和WIN32_FIND_DATA的定义

Public Type FILETIME

dwLowDateTime As Long

dwHighDateTime As Long

End Type

Public Type WIN32_FIND_DATA

 dwFileAttributes As Long

 ftCreationTime As FILETIME

 ftLastAccessTime As FILETIME

 ftLastWriteTime As FILETIME

 nFileSizeHigh As Long

 nFileSizeLow As Long

 dwReserved0 As Long

 dwReserved1 As Long

 cFileName As String * MAX_PATH

 cAlternate As String * 14

End Type

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'去掉固定长度字符串右边的NULL字符(ASCII值为0)和SPACE字符(ASCII值为32)函数

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Function fDelInvaildChr(str As String) As String

 On Error Resume Next

 For i = Len(str) To 1 Step -1

  If Asc(Mid(str, i, 1)) <> 0 And Asc(Mid(str, i, 1)) <> 32 Then

   fDelInvaildChr = Left(str, i)

   Exit For

  End If

 Next

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'遍历主函数

'参数说明:

' strPathName 要遍历的目录

' objList 使用VB的内部控件ListBox来存放遍历得到的路径,之所以

' 不使用字符串数组是因为数组大小不好定义

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Sub sDirTraversal(ByVal strPathName As String, ByRef objList As ListBox)

 Dim sSubDir(200) As String '存放当前目录下的子目录,下标可根据需要调整

 Dim iIndex As Integer '子目录数组下标

 Dim i As Integer '用于循环子目录的查找

 Dim lHandle As Long 'FindFirstFileA 的句柄

 Dim tFindData As WIN32_FIND_DATA '

 Dim strFileName As String '文件名

 On Error Resume Next

 '初始化变量

 i = 1

 iIndex = 0

 tFindData.cFileName = "" '初始化定长字符串

 lHandle = FindFirstFile(strPathName & "\*.*", tFindData)

 If lHandle = 0 Then '查询结束或发生错误

Exit Sub

End If

strFileName = fDelInvaildChr(tFindData.cFileName)

If tFindData.dwFileAttributes = &H10 Then '目录

 If strFileName <> "." And strFileName <> ".." Then

  iIndex = iIndex + 1

  sSubDir(iIndex) = strPathName & "\" & strFileName '添加到目录数组

 End If

Else

 objList.AddItem strPathName & "\" & strFileName

End If

'循环查找下一个文件,直到结束

Do While True

 tFindData.cFileName = ""

 If FindNextFile(lHandle, tFindData) = 0 Then '查询结束或发生错误

  FindClose (lHandle)

  Exit Do

 Else

  strFileName = fDelInvaildChr(tFindData.cFileName)

  If tFindData.dwFileAttributes = &H10 Then

   If strFileName <> "." And strFileName <> ".." Then

    iIndex = iIndex + 1

    sSubDir(iIndex) = strPathName & "\" & strFileName '添加到目录数组

   End If

  Else

   objList.AddItem strPathName & "\" & strFileName

  End If

 End If

Loop

 '如果该目录下有目录,则根据目录数组递归遍历

 If iIndex > 0 Then

  For i = 1 To iIndex

   sDirTraversal sSubDir(i), objList

  Next

 End If

End Sub

上一页  5 6 7 8 9 10 11  下一页

Tags:如何 视图 使用

编辑录入:coldstar [复制链接] [打 印]
赞助商链接