📄 frmmodifydata.frm
字号:
VERSION 5.00
Object = "{4932CEF1-2CAA-11D2-A165-0060081C43D9}#2.0#0"; "Actbar2.OCX"
Object = "{86CF1D34-0C5F-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCT2.OCX"
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Begin VB.Form frmModifyData
BorderStyle = 1 'Fixed Single
Caption = "数据输入"
ClientHeight = 6345
ClientLeft = 45
ClientTop = 435
ClientWidth = 8610
Icon = "frmModifyData.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 6345
ScaleWidth = 8610
StartUpPosition = 1 '所有者中心
Begin VB.Data Data1
Caption = "Data1"
Connect = "Access 2000;"
DatabaseName = ""
DefaultCursorType= 0 '缺省游标
DefaultType = 2 '使用 ODBC
Exclusive = 0 'False
Height = 405
Left = 120
Options = 0
ReadOnly = 0 'False
RecordsetType = 1 'Dynaset
RecordSource = ""
Top = 6480
Visible = 0 'False
Width = 1455
End
Begin VB.Frame fraData
Caption = "[显示]"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H00FF0000&
Height = 5775
Left = 120
TabIndex = 13
Top = 480
Width = 4335
Begin MSComctlLib.ListView lstAppData
Height = 4935
Left = 120
TabIndex = 14
Top = 720
Width = 4095
_ExtentX = 7223
_ExtentY = 8705
View = 3
LabelEdit = 1
LabelWrap = -1 'True
HideSelection = -1 'True
FullRowSelect = -1 'True
GridLines = -1 'True
_Version = 393217
ForeColor = -2147483640
BackColor = -2147483643
BorderStyle = 1
Appearance = 1
NumItems = 2
BeginProperty ColumnHeader(1) {BDD1F052-858B-11D1-B16A-00C0F0283628}
Text = "属性"
Object.Width = 2540
EndProperty
BeginProperty ColumnHeader(2) {BDD1F052-858B-11D1-B16A-00C0F0283628}
SubItemIndex = 1
Text = "值"
Object.Width = 2540
EndProperty
End
Begin MSComctlLib.ListView lstMapData
Height = 2175
Left = 120
TabIndex = 15
Top = 720
Width = 4095
_ExtentX = 7223
_ExtentY = 3836
View = 3
LabelWrap = -1 'True
HideSelection = -1 'True
FullRowSelect = -1 'True
GridLines = -1 'True
_Version = 393217
ForeColor = -2147483640
BackColor = -2147483643
BorderStyle = 1
Appearance = 1
NumItems = 2
BeginProperty ColumnHeader(1) {BDD1F052-858B-11D1-B16A-00C0F0283628}
Text = "属性"
Object.Width = 2540
EndProperty
BeginProperty ColumnHeader(2) {BDD1F052-858B-11D1-B16A-00C0F0283628}
SubItemIndex = 1
Text = "值"
Object.Width = 2540
EndProperty
End
Begin VB.Label Label4
Caption = "扩展数据:"
Height = 255
Left = 120
TabIndex = 16
Top = 360
Width = 1215
End
Begin VB.Label Label1
Caption = "基本数据:"
Height = 255
Left = 120
TabIndex = 17
Top = 360
Width = 1095
End
End
Begin VB.Frame fraInput
Caption = "[输入]"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H00FF0000&
Height = 5775
Left = 4560
TabIndex = 1
Top = 480
Width = 3975
Begin VB.CommandButton cmdPic
Caption = "导入外部图形"
Height = 375
Left = 1080
TabIndex = 20
Top = 1680
Visible = 0 'False
Width = 1455
End
Begin VB.ComboBox cmbText
Appearance = 0 'Flat
Height = 300
Left = 1080
TabIndex = 19
Text = "cmbText"
Top = 1680
Visible = 0 'False
Width = 2775
End
Begin VB.TextBox txtField
Appearance = 0 'Flat
BackColor = &H8000000B&
Height = 270
Left = 1080
Locked = -1 'True
TabIndex = 8
Top = 480
Width = 2775
End
Begin VB.TextBox txtNumber
Appearance = 0 'Flat
Height = 270
Left = 1080
TabIndex = 7
Top = 1680
Width = 2775
End
Begin VB.TextBox txtType
Appearance = 0 'Flat
BackColor = &H8000000B&
Height = 270
Left = 1080
Locked = -1 'True
TabIndex = 5
Top = 1080
Width = 975
End
Begin VB.TextBox txtLength
Appearance = 0 'Flat
BackColor = &H8000000B&
Height = 270
Left = 3120
Locked = -1 'True
TabIndex = 4
Top = 1080
Width = 735
End
Begin VB.TextBox txtText
Appearance = 0 'Flat
Height = 735
Left = 1080
ScrollBars = 2 'Vertical
TabIndex = 3
Top = 1680
Visible = 0 'False
Width = 2775
End
Begin VB.ListBox lstSelect
Height = 2580
Left = 120
TabIndex = 2
Top = 3070
Width = 3735
End
Begin MSComCtl2.DTPicker txtData
Height = 270
Left = 1080
TabIndex = 6
Top = 1680
Visible = 0 'False
Width = 2775
_ExtentX = 4895
_ExtentY = 476
_Version = 393216
Format = 64618497
CurrentDate = 37540
End
Begin VB.Label Label2
Caption = "参考:"
Height = 255
Left = 120
TabIndex = 18
Top = 2640
Width = 855
End
Begin VB.Label Label3
Caption = "值:"
Height = 255
Left = 120
TabIndex = 12
Top = 1680
Width = 855
End
Begin VB.Label Label6
Caption = "字段名:"
Height = 255
Left = 120
TabIndex = 11
Top = 480
Width = 975
End
Begin VB.Label Label7
Caption = "数据类型:"
Height = 255
Left = 120
TabIndex = 10
Top = 1080
Width = 975
End
Begin VB.Label Label8
Caption = "字段长度:"
Height = 255
Left = 2160
TabIndex = 9
Top = 1080
Width = 975
End
End
Begin ActiveBar2LibraryCtl.ActiveBar2 ActiveBar21
Align = 1 'Align Top
Height = 495
Left = 0
TabIndex = 0
Top = 0
Width = 8610
_LayoutVersion = 1
_ExtentX = 15187
_ExtentY = 873
_DataPath = ""
Bands = "frmModifyData.frx":08A6
End
End
Attribute VB_Name = "frmModifyData"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'------------------------------------------------------------------------------------------
'2002-10-23
'重写自动完成功能,删除两个多余的数据空间,不用SQL关键字Distinct,而采用MO.Strings生成
'经验列表lstSelect;改进软件界面。
'2002-10-13
'重写数据转换模块,解决数据类型转换问题
'将mdb数据与dbf数据库作为扩展数据和基本数据分开定位和输入
'重新整理程序,重写大多数模块
'
'窗口执行数据修改功能
'在显示窗口前,现将RecModify定位到需要修改的记录,
'在修改前先断开所有数据连接
'
'由于mo的数据修改只能直接进行,不能用SQL过滤后修改,
'所以先用Locator函数对需要修改的纪录进行定位。
'基本数据是shape格式所带的数据(Dbase格式),扩展数据是用relation关联的Access数据
'
'通过mo访问修改数据,由于mo内置数据引擎问题(DBase),功能受到诸多限制,考虑全部使用jet访问
'------------------------------------------------------------------------------------------
Private Index As Long
Private strID As String
Public Sub InitForm(lIndex As Long)
'--------------------------------------------------------------------------------------
'初始化操作
'--------------------------------------------------------------------------------------
Index = lIndex
strID = RecModify.Fields("SID").ValueAsString
Call RefreshMapData
If CustomLayers(Index).RelationCount > 0 Then
Call RefreshAppData
lstAppData.Enabled = True
Else
lstAppData.Enabled = False
End If
End Sub
Private Function fnUpdataMapData() As Boolean
'--------------------------------------------------------------------------------------
'基本数据存入数据库
'--------------------------------------------------------------------------------------
Dim lplst As Long
Dim FieldX As Field
If Not RecModify.Updatable Then
fnUpdataMapData = False
Exit Function
End If
RecModify.StopEditing
DoEvents
RecModify.Edit
For lplst = 1 To lstMapData.ListItems.Count
Set FieldX = RecModify.Fields(lstMapData.ListItems(lplst).text)
Select Case FieldX.Type
Case moDate
FieldX.Value = CDate(lstMapData.ListItems(lplst).ListSubItems("Attribut").text)
Case moString
FieldX.Value = CStr(lstMapData.ListItems(lplst).ListSubItems("Attribut").text)
Case moLong
FieldX.Value = CLng(lstMapData.ListItems(lplst).ListSubItems("Attribut").text)
Case moDouble
FieldX.Value = CDbl(lstMapData.ListItems(lplst).ListSubItems("Attribut").text)
End Select
Next lplst
RecModify.Update
RecModify.StopEditing
fnUpdataMapData = True
End Function
Private Function fnUpdataAppData() As Boolean
'--------------------------------------------------------------------------------------
'扩展数据存入数据库
'--------------------------------------------------------------------------------------
Dim lplst As Long
Dim FieldX As dao.Field
If lstAppData.ListItems.Count <= 0 Then
fnUpdataAppData = True
Exit Function
End If
On Error Resume Next
Data1.DatabaseName = CustomLayers(Index).Relation(0).Database
Data1.RecordSource = "select * from " & CustomLayers(Index).Relation(0).Table & " where ID=" & RecModify.Fields("ID").ValueAsString
Data1.Refresh
If Not Data1.Recordset.Updatable Then
fnUpdataAppData = False
Exit Function
End If
Dim PicName As String
If Not Data1.Recordset.EOF Then
Data1.Recordset.Edit
For lplst = 1 To lstAppData.ListItems.Count
Set FieldX = Data1.Recordset.Fields(lstAppData.ListItems(lplst).Key)
If FieldX.Name = CustomLayers(Index).PictureField Then
PicName = ImportPicture(lstAppData.ListItems(lplst).ListSubItems("Attribut").text)
If PicName <> "" Then FieldX.Value = PicName
Else
Select Case FieldX.Type
Case dbLong
FieldX.Value = Val(lstAppData.ListItems(lplst).ListSubItems("Attribut").text)
Case dbInteger
FieldX.Value = CInt(lstAppData.ListItems(lplst).ListSubItems("Attribut").text)
Case dbSingle
FieldX.Value = CSng(lstAppData.ListItems(lplst).ListSubItems("Attribut").text)
Case dbDouble
FieldX.Value = CDbl(lstAppData.ListItems(lplst).ListSubItems("Attribut").text)
Case dbText
FieldX.Value = CStr(lstAppData.ListItems(lplst).ListSubItems("Attribut").text)
Case dbDate
FieldX.Value = CDate(lstAppData.ListItems(lplst).ListSubItems("Attribut").text)
End Select
End If
Next lplst
Data1.Recordset.Update
End If
Data1.DatabaseName = ""
Data1.Refresh
fnUpdataAppData = True
End Function
Private Sub RefreshMapData()
'--------------------------------------------------------------------------------------
'基本数据更新
'--------------------------------------------------------------------------------------
Dim lpointer As Long
Dim ListX As ListItem
lstMapData.ListItems.Clear
For lpointer = 0 To RecModify.TableDesc.FieldCount - 1
If RecModify.TableDesc.FieldName(lpointer) <> "SID" Then
Set ListX = lstMapData.ListItems.Add(Key:=RecModify.TableDesc.FieldName(lpointer), text:=RecModify.TableDesc.FieldName(lpointer))
ListX.ListSubItems.Add text:=RecModify.Fields(RecModify.TableDesc.FieldName(lpointer)).ValueAsString, Key:="Attribut"
End If
Next lpointer
End Sub
Private Sub RefreshAppData()
'--------------------------------------------------------------------------------------
'扩展数据更新
'--------------------------------------------------------------------------------------
Dim lpointer As Long
Dim ListX As ListItem
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -