⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmsqlsearch.frm

📁 地理信息系统工程案例精选程序,本书所有案例均需要单独配置
💻 FRM
字号:
VERSION 5.00
Object = "{4932CEF1-2CAA-11D2-A165-0060081C43D9}#2.0#0"; "Actbar2.OCX"
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Begin VB.Form frmSQLSearch 
   BorderStyle     =   1  'Fixed Single
   Caption         =   "搜索属性"
   ClientHeight    =   5700
   ClientLeft      =   45
   ClientTop       =   330
   ClientWidth     =   8430
   Icon            =   "frmSQLSearch.frx":0000
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   5700
   ScaleWidth      =   8430
   StartUpPosition =   1  '所有者中心
   Begin VB.Frame fraExpression 
      Caption         =   "条件表达式"
      Height          =   1575
      Left            =   2520
      TabIndex        =   9
      Top             =   4080
      Width           =   5895
      Begin VB.TextBox txtSearch 
         Height          =   1215
         Left            =   120
         MultiLine       =   -1  'True
         ScrollBars      =   2  'Vertical
         TabIndex        =   10
         Top             =   240
         Width           =   5655
      End
   End
   Begin VB.Frame fraField 
      Caption         =   "字段"
      Height          =   5175
      Left            =   0
      TabIndex        =   2
      Top             =   480
      Width           =   2415
      Begin MSComctlLib.ListView lstField 
         Height          =   4455
         Left            =   120
         TabIndex        =   17
         Top             =   600
         Width           =   2175
         _ExtentX        =   3836
         _ExtentY        =   7858
         View            =   3
         LabelEdit       =   1
         LabelWrap       =   -1  'True
         HideSelection   =   -1  'True
         HideColumnHeaders=   -1  'True
         Checkboxes      =   -1  'True
         _Version        =   393217
         ForeColor       =   -2147483640
         BackColor       =   -2147483643
         BorderStyle     =   1
         Appearance      =   1
         NumItems        =   1
         BeginProperty ColumnHeader(1) {BDD1F052-858B-11D1-B16A-00C0F0283628} 
            Object.Width           =   3819
         EndProperty
      End
      Begin VB.Label Label1 
         Caption         =   "请选择需要显示的字段名"
         Height          =   375
         Left            =   120
         TabIndex        =   3
         Top             =   360
         Width           =   2175
      End
   End
   Begin VB.Frame fraSQL 
      Caption         =   "生成条件"
      Height          =   3495
      Left            =   2520
      TabIndex        =   1
      Top             =   480
      Width           =   5895
      Begin VB.TextBox txtValue 
         Height          =   270
         Left            =   3720
         TabIndex        =   16
         Top             =   480
         Width           =   1935
      End
      Begin VB.TextBox txtField 
         Height          =   270
         Left            =   240
         TabIndex        =   15
         Top             =   480
         Width           =   1935
      End
      Begin VB.ListBox lstExistValue 
         Height          =   2040
         Left            =   3720
         TabIndex        =   14
         Top             =   840
         Width           =   1935
      End
      Begin VB.ListBox lstSelectField 
         Height          =   2040
         Left            =   240
         TabIndex        =   13
         Top             =   840
         Width           =   1935
      End
      Begin VB.ComboBox cmbRelate 
         Height          =   300
         ItemData        =   "frmSQLSearch.frx":08A6
         Left            =   1800
         List            =   "frmSQLSearch.frx":08B6
         TabIndex        =   12
         Text            =   "AND"
         Top             =   3000
         Width           =   1575
      End
      Begin VB.CommandButton cmbAdd 
         Caption         =   "加入"
         Height          =   255
         Left            =   4920
         TabIndex        =   8
         Top             =   3000
         Width           =   735
      End
      Begin VB.ComboBox cmbOperate 
         Height          =   300
         ItemData        =   "frmSQLSearch.frx":08D4
         Left            =   2280
         List            =   "frmSQLSearch.frx":08ED
         TabIndex        =   6
         Text            =   "等于"
         Top             =   480
         Width           =   1335
      End
      Begin VB.Label Label6 
         Caption         =   "与其他条件关系:"
         Height          =   255
         Left            =   240
         TabIndex        =   11
         Top             =   3120
         Width           =   1455
      End
      Begin VB.Label Label5 
         Caption         =   "值:"
         Height          =   255
         Left            =   3720
         TabIndex        =   7
         Top             =   240
         Width           =   615
      End
      Begin VB.Label Label4 
         Caption         =   "条件:"
         Height          =   255
         Left            =   2280
         TabIndex        =   5
         Top             =   240
         Width           =   855
      End
      Begin VB.Label Label3 
         Caption         =   "字段名:"
         Height          =   255
         Left            =   240
         TabIndex        =   4
         Top             =   240
         Width           =   735
      End
   End
   Begin ActiveBar2LibraryCtl.ActiveBar2 ActiveBar21 
      Align           =   1  'Align Top
      Height          =   495
      Left            =   0
      TabIndex        =   0
      Top             =   0
      Width           =   8430
      _LayoutVersion  =   1
      _ExtentX        =   14870
      _ExtentY        =   873
      _DataPath       =   ""
      Bands           =   "frmSQLSearch.frx":0925
   End
End
Attribute VB_Name = "frmSQLSearch"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'----------------------------------------------------------------------------------
'2002-11-11改进初始化,清除残留数据
'2002-10-25将treeview改成ListView,用mo.strings修改ExistValue
'2002-10-15
'重写所有模块.
'加入数据参考(相关字段已存在值)功能
'修正数据查询语句生成函数。解决各种类型数据查询问题
'----------------------------------------------------------------------------------
Dim Index As Long

Public Sub InitForm(lIndex As Long)
'------------------------------------------------
'对窗体和各个控件初始化
'------------------------------------------------
Index = lIndex

Call IniRelate
Call IniOperator
Call InilstField
txtValue = ""
txtField = ""
txtSearch = ""

End Sub
Private Sub InilstField()
'------------------------------------------------
'刷新lstField
'------------------------------------------------

Dim RecordX As MapObjects2.Recordset
Dim ListX As ListItem
Set RecordX = frmMain.Map1.Layers(Index).Records

lstField.ListItems.Clear
lstSelectField.Clear

Dim lpointer As Long

lstField.ListItems.Clear

For lpointer = 0 To RecordX.TableDesc.FieldCount - 1
    If Not bIsExcept(RecordX.TableDesc.FieldName(lpointer) _
        , Index) Then
        Set ListX = lstField.ListItems.Add( _
            Key:=RecordX.TableDesc.FieldName(lpointer), _
            text:=RecordX.TableDesc.FieldName(lpointer))
        ListX.Checked = True
        
        lstSelectField.AddItem RecordX.TableDesc.FieldName(lpointer)
    End If
Next lpointer

End Sub
Private Sub IniOperator()
'-----------------------------------------------
'刷新运算符
'-----------------------------------------------
cmbOperate.AddItem "="
cmbOperate.AddItem ">"
cmbOperate.AddItem ">="
cmbOperate.AddItem "<"
cmbOperate.AddItem "<="
cmbOperate.AddItem "<>"
cmbOperate.AddItem "包含"
cmbOperate.ListIndex = 0

End Sub
Private Sub IniRelate()
'-----------------------------------------------
'刷新关系
'-----------------------------------------------
cmbRelate.Clear
cmbRelate.AddItem "and"
cmbRelate.AddItem "or"
cmbRelate.AddItem "and not"
cmbRelate.AddItem "or not"
cmbRelate.ListIndex = 0
End Sub
Private Sub RefreshExistValue()
'------------------------------------------------
'调集数据的数据库中已有数据作为参考
'------------------------------------------------
lstExistValue.Clear

If lstSelectField.ListIndex < 0 Then
    Exit Sub
End If
RecQuery.MoveFirst
If RecQuery.EOF Then Exit Sub


Dim strField As String
strField = lstSelectField.List(lstSelectField.ListIndex)

Dim ExistValue As New MapObjects2.Strings

Do Until RecQuery.EOF
    ExistValue.Add RecQuery.Fields(strField).ValueAsString
    RecQuery.MoveNext
    If ExistValue.Count2 > 200 Then Exit Do
    DoEvents
Loop

Dim lpointer As Long

For lpointer = 0 To ExistValue.Count2 - 1
    lstExistValue.AddItem ExistValue(lpointer)
    DoEvents
Next lpointer

End Sub
Private Function fnStructQuery() As String
'-----------------------------------------------
'根据用户输入,构造查询语句
'-----------------------------------------------
Dim strOperate As String
Dim strValue As String
strValue = txtValue
If cmbOperate = "包含" Then
    strOperate = "like"
    strValue = "%" & strValue & "%"
Else
    strOperate = cmbOperate
End If

'判断字段类型,若字段为非数值字段,则自动添加双引号
Select Case fnFieldType(txtField)
    Case -1
        strValue = "'" & strValue & "'"
    Case moLong
        strValue = strValue
    Case moDouble
        strValue = strValue
    Case moDate
        strValue = strValue
    Case moString
        strValue = "'" & strValue & "'"
    Case Else
        strValue = "'" & strValue & "'"
End Select

fnStructQuery = txtField & " " & strOperate & " " & strValue
End Function

Private Function fnFieldType(strField As String) _
    As FieldTypeConstants
'---------------------------------------------------
'已知字段名strField查询其类型
'---------------------------------------------------

Dim lpField As Long

'查找字段
For lpField = 0 To RecQuery.TableDesc.FieldCount - 1
    If RecQuery.TableDesc.FieldName(lpField) = strField Then Exit For
Next

If lpField > RecQuery.TableDesc.FieldCount - 1 Then
    fnFieldType = -1    '没找到字段
Else
    fnFieldType = RecQuery.TableDesc.FieldType(lpField)
End If

End Function
Private Sub ActiveBar21_ToolClick(ByVal Tool As ActiveBar2LibraryCtl.Tool)

Select Case Tool.Name
    Case "Search"
        g_searchExpression = txtSearch.text
        Me.Hide
        Call GetDataset(Index, byExpression)
        Call frmTrackSearch.InitForm(Index)
        If Not frmTrackSearch.Visible Then
            frmTrackSearch.Show
        End If
        
    Case "Exit"
        Me.Hide
    Case "Clean"
        txtSearch.text = ""
End Select


End Sub
Private Sub cmbAdd_Click()
'---------------------------------------------------
'用户单击"添加"按钮,将当前用户输入的条件添加到搜索条件中
'---------------------------------------------------

If txtField <> "" And txtValue <> "" Then
    If Trim(txtSearch) <> "" Then
        txtSearch = txtSearch & " " & cmbRelate & " " & fnStructQuery
    Else
        txtSearch = fnStructQuery
    End If
End If

End Sub

Private Sub lstExistValue_Click()
'---------------------------------------------------
'用户单击参考列表,将参考列表中用户选择数据更新至控件
'---------------------------------------------------

If lstExistValue.ListIndex >= 0 Then
    txtValue = lstExistValue.List(lstExistValue.ListIndex)
End If

End Sub

Private Sub lstSelectField_Click()
'---------------------------------------------------
'用户单击字段列表,将字段列表中用户选择字段更新至控件
'---------------------------------------------------

If lstSelectField.ListIndex >= 0 Then
    txtField = lstSelectField.List(lstSelectField.ListIndex)
    Call RefreshExistValue
End If

End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -