在 VB6 中加载和保存值
Load and save values in VB6
所以,这是我的界面:
这是我的用户控件:
TextBox = Text1 / ComboBox = cmbAddExample
这是来自 UserControl
的代码:
Option Explicit
Dim cnn As Connection
Dim rs As Recordset
Dim sql As Command
Private Sub UserControl_Initialize()
Set rs = New Recordset
rs.CursorLocation = adUseServer
Call IniciarConexion
CargaIDTipoNumero
End Sub
Public Property Get AddType() As String
AddType = cmbAddExample.Text
End Property
Public Property Let AddType(ByVal Value As String)
cmbAddExample.Text = Value
End Property
Public Property Get AddNumber() As String
AddNumber = Text1.Text
End Property
Public Property Let AddNumber(ByVal Value As String)
Text1.Text = Value
End Property
Private Sub CargaIDTipoNumero()
cmbAddExample.Clear
rs.Open "SELECT idTipo, tipo FROM tipo_Numero", cnn, adOpenDynamic, adLockOptimistic
Do While rs.EOF = False
cmbAddExample.AddItem rs!tipo
cmbAddExample.ItemData(cmbAddExample.NewIndex) = rs!idTipo
rs.MoveNext
Loop
rs.Close
End Sub
Private Sub IniciarConexion()
Set cnn = New ADODB.Connection
With cnn
.CursorLocation = adUseClient
.Open "PROVIDER=MSDASQL;driver={SQL Server};server=server;uid=uid;pwd=pwd;database=database;"
End With
End Sub
在我的表单中,我有以下方法连接 SQLServer 并从中加载数据:
Private Sub Form_Load()
Set rs = New Recordset
rs.CursorLocation = adUseServer
Picture1.Visible = False
Call IniciarConexion
CargaIDTipoNumero
End Sub
Private Sub IniciarConexion()
Set cnn = New ADODB.Connection
With cnn
.CursorLocation = adUseClient
.Open "PROVIDER=MSDASQL;driver={SQL Server};server=server;uid=uid;pwd=pwd;database=database;"
End With
End Sub
Private Sub CargaIDTipoNumero()
cmbAddExample(indice).Clear
rs.Open "SELECT idTipo, tipo FROM tipo_Numero", cnn, adOpenDynamic, adLockOptimistic
Do While rs.EOF = False
cmbAddExample(indice).AddItem rs!tipo
cmbAddExample(indice).ItemData(cmbAddExample(indice).NewIndex) = rs!idTipo
rs.MoveNext
Loop
rs.Close
End Sub
所以,问题如下:
compilation error sub or function not defined
行内:cmbAddExample(indice).Clear
最后,我有一个 "Guardar" button
将数据保存在 SQLServer 中:
Private Sub btnGuardar_Click()
Dim i As Integer
Dim id As Integer
Dim CM As ADODB.Command
For i = 0 To indice
id = cmbAddExample(i).ItemData(cmbAddExample(i).ListIndex)
Set CM = New ADODB.Command
Set CM.ActiveConnection = cnn
CM.CommandType = adCmdText
CM.CommandText = "INSERT INTO ejemplo (combo,nombre) VALUES (?,?)"
CM.Parameters.Append CM.CreateParameter("@txt", adInteger, , , id)
CM.Parameters.Append CM.CreateParameter("@comboDos", adInteger, , , Text1(i).Text)
CM.Execute , , adExecuteNoRecords
Next
End Sub
如何用 SQLServer 数据加载 ComboBox?
我该如何保存它们?
要在 UserControl 中加载组合并稍后保存选择,我会向 UserControl 添加其他方法和属性:
Public Sub LoadAddType(ByVal Data As ADODB.Recordset)
cmbAddType.Clear
Data.MoveFirst
Do While Not Data.EOF
cmbAddType.AddItem Data!tipo
cmbAddType.ItemData(cmbAddType.NewIndex) = Data!idTipo
Data.MoveNext
Loop
End Sub
Public Sub LoadAddType2()
***or this could be in UserControl_Initialize()
cmbAddType.Clear
cmbAddType.AddItem "celular"
cmbAddType.AddItem "option2"
End Sub
Public Property Get AddTypeID() As Integer
AddTypeID = cmbAddType.ItemData(cmbAddType.ListIndex)
End Property
保持所有数据库连接并在主窗体上查询,然后您可以像这样初始化您的用户控件:
Private Sub Form_Load()
uc1(0).LoadAddType rs
End Sub
并且每次添加 UserControl 时:
Private Sub btnAdd_Click()
uc1(indice).LoadAddType rs
End Sub
为了保存用户的选择,一般的想法是:
Private Sub btnGuardar_Click()
Dim i As Integer
Dim id As Integer
Dim sel As String
Dim CM As ADODB.Command
For i = 0 To indice
id = uc1(i).AddTypeID
sel = uc1(i).AddType
***with the retrieved data, build your CM object
Next
End Sub
所以,这是我的界面:
这是我的用户控件:
TextBox = Text1 / ComboBox = cmbAddExample
这是来自 UserControl
的代码:
Option Explicit
Dim cnn As Connection
Dim rs As Recordset
Dim sql As Command
Private Sub UserControl_Initialize()
Set rs = New Recordset
rs.CursorLocation = adUseServer
Call IniciarConexion
CargaIDTipoNumero
End Sub
Public Property Get AddType() As String
AddType = cmbAddExample.Text
End Property
Public Property Let AddType(ByVal Value As String)
cmbAddExample.Text = Value
End Property
Public Property Get AddNumber() As String
AddNumber = Text1.Text
End Property
Public Property Let AddNumber(ByVal Value As String)
Text1.Text = Value
End Property
Private Sub CargaIDTipoNumero()
cmbAddExample.Clear
rs.Open "SELECT idTipo, tipo FROM tipo_Numero", cnn, adOpenDynamic, adLockOptimistic
Do While rs.EOF = False
cmbAddExample.AddItem rs!tipo
cmbAddExample.ItemData(cmbAddExample.NewIndex) = rs!idTipo
rs.MoveNext
Loop
rs.Close
End Sub
Private Sub IniciarConexion()
Set cnn = New ADODB.Connection
With cnn
.CursorLocation = adUseClient
.Open "PROVIDER=MSDASQL;driver={SQL Server};server=server;uid=uid;pwd=pwd;database=database;"
End With
End Sub
在我的表单中,我有以下方法连接 SQLServer 并从中加载数据:
Private Sub Form_Load()
Set rs = New Recordset
rs.CursorLocation = adUseServer
Picture1.Visible = False
Call IniciarConexion
CargaIDTipoNumero
End Sub
Private Sub IniciarConexion()
Set cnn = New ADODB.Connection
With cnn
.CursorLocation = adUseClient
.Open "PROVIDER=MSDASQL;driver={SQL Server};server=server;uid=uid;pwd=pwd;database=database;"
End With
End Sub
Private Sub CargaIDTipoNumero()
cmbAddExample(indice).Clear
rs.Open "SELECT idTipo, tipo FROM tipo_Numero", cnn, adOpenDynamic, adLockOptimistic
Do While rs.EOF = False
cmbAddExample(indice).AddItem rs!tipo
cmbAddExample(indice).ItemData(cmbAddExample(indice).NewIndex) = rs!idTipo
rs.MoveNext
Loop
rs.Close
End Sub
所以,问题如下:
compilation error sub or function not defined
行内:cmbAddExample(indice).Clear
最后,我有一个 "Guardar" button
将数据保存在 SQLServer 中:
Private Sub btnGuardar_Click()
Dim i As Integer
Dim id As Integer
Dim CM As ADODB.Command
For i = 0 To indice
id = cmbAddExample(i).ItemData(cmbAddExample(i).ListIndex)
Set CM = New ADODB.Command
Set CM.ActiveConnection = cnn
CM.CommandType = adCmdText
CM.CommandText = "INSERT INTO ejemplo (combo,nombre) VALUES (?,?)"
CM.Parameters.Append CM.CreateParameter("@txt", adInteger, , , id)
CM.Parameters.Append CM.CreateParameter("@comboDos", adInteger, , , Text1(i).Text)
CM.Execute , , adExecuteNoRecords
Next
End Sub
如何用 SQLServer 数据加载 ComboBox? 我该如何保存它们?
要在 UserControl 中加载组合并稍后保存选择,我会向 UserControl 添加其他方法和属性:
Public Sub LoadAddType(ByVal Data As ADODB.Recordset)
cmbAddType.Clear
Data.MoveFirst
Do While Not Data.EOF
cmbAddType.AddItem Data!tipo
cmbAddType.ItemData(cmbAddType.NewIndex) = Data!idTipo
Data.MoveNext
Loop
End Sub
Public Sub LoadAddType2()
***or this could be in UserControl_Initialize()
cmbAddType.Clear
cmbAddType.AddItem "celular"
cmbAddType.AddItem "option2"
End Sub
Public Property Get AddTypeID() As Integer
AddTypeID = cmbAddType.ItemData(cmbAddType.ListIndex)
End Property
保持所有数据库连接并在主窗体上查询,然后您可以像这样初始化您的用户控件:
Private Sub Form_Load()
uc1(0).LoadAddType rs
End Sub
并且每次添加 UserControl 时:
Private Sub btnAdd_Click()
uc1(indice).LoadAddType rs
End Sub
为了保存用户的选择,一般的想法是:
Private Sub btnGuardar_Click()
Dim i As Integer
Dim id As Integer
Dim sel As String
Dim CM As ADODB.Command
For i = 0 To indice
id = uc1(i).AddTypeID
sel = uc1(i).AddType
***with the retrieved data, build your CM object
Next
End Sub