Mi problema es el sigueinte:
Tengo 2 combobox en un formulario los cuales lleno de una tabla en una base de datos cada uno tiene su respectiva tabla, en estos combos no relleno ninguna caja de texto al seleccionar solo selecciono un dato y este dato que selecciono pretendo guardarlo en otra tabla, pero al momento de guardarlo me dice que no coinciden los tipos que codigo debo utlizar para guardar mis datos, aqui les dejo mi codigo:
If msAccion = "N" Then
txtClave.Text = AddNewProyecto
End If
rs("id_consec") = txtClave.Text
rs("sexo") = txtSexo.Text
rs("edo_civil") = txtedoCivil.Text
rs("nombreProyecto") = txtProyecto.Text
'rs("programaProv") = cmbPrograma.ItemData(cmbPrograma.ListIndex)
rs("numProy") = txtnumProyecto.Text
rs("año_de_apoyo") = txtAñoapoyo.Text
rs("fecha_entrega") = ssFecha
rs("aportacionGob") = txtAportacionGob.Text
rs("aportacionBenef") = txtAportBenef.Text
rs("monto_tot_proyecto") = ssImpTotal
rs("nombre_s") = txtNombre.Text
rs("apellido_paterno") = txtPaterno.Text
rs("apellido_materno") = txtMaterno.Text
rs("localidad") = txtLocalidad.Text
' rs("municipio") = cmbMunicipio.ItemData(cmbMunicipio.ListIndex)
rs("tel_part") = txtParticular.Text
rs("tel_cel") = txtCel.Text
rs("Curp") = txtCurp.Text
rs("id_oficial") = txtIdOf.Text
rs("correo_electronico") = txtCorreo.Text
rs.Update
este que siguem es el codigo con el que cargo el combo:
Private Sub cmbMunicipio_Click()
If cmbMunicipio.ListIndex < 0 Then Exit Sub
' txtNombre.Text = ""
If rs.State = 1 Then rs.Close
rs.Open "select * from MUNICIPIOS WHERE Id = " & cmbMunicipio.ItemData(cmbMunicipio.ListIndex), cn, adOpenDynamic, adLockOptimistic
If Not rs.EOF Then
End If
End Sub
otro codigo que utilizo y por si me pueden ayudar es este manejo un modulo.bas para jalar la base de datos:
Public fMainForm As Contraseña
Global cn As New ADODB.Connection
Global rs As ADODB.Recordset
Global rs2 As ADODB.Recordset
Sub Main()
frmSplash.Show
frmSplash.Refresh
Set fMainForm = New Contraseña
Load fMainForm
Unload frmSplash
fMainForm.Show
Set rs = New ADODB.Recordset
Set cn = New ADODB.Connection
Set rs2 = New ADODB.Recordset
rs.CursorType = adOpenDynamic 'Definimos el tipo de cursor.
rs.LockType = adLockBatchOptimistic 'Definimos el tipo de bloqueo.
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "\BD_DPF_CTRL.mdb;Persist Security Info=False"
'Form1.Show
End Sub
Sub CargaCombo(pCombo As Variant, pQuery As String, Optional pCnn As ADODB.Connection)
Dim bAgregarOK As Boolean
On Error GoTo Error
'Set rs2 = Nothing
pCombo.Clear
Set rs2 = New ADODB.Recordset
If rs2.State = 1 Then rs2.Close
rs2.Open pQuery, cn, adOpenDynamic, adLockOptimistic
If Err.Number = 0 Then
While Not rs2.EOF
pCombo.AddItem rs2.Fields(1)
pCombo.ItemData(pCombo.NewIndex) = rs2.Fields(0)
rs2.MoveNext
Wend
End If
Error:
End Sub
Sub CargaCombo2(pCombo As Variant, pQuery As String, Optional pCnn As ADODB.Connection)
Dim bAgregarOK As Boolean
On Error GoTo Error
'Set rs2 = Nothing
Set rs2 = New ADODB.Recordset
If rs2.State = 1 Then rs2.Close
rs2.Open pQuery, cn, adOpenDynamic, adLockOptimistic
If Err.Number = 0 Then
While Not rs2.EOF
pCombo.AddItem rs2.Fields(1)
pCombo.ItemData(pCombo.NewIndex) = rs2.Fields(0)
rs2.MoveNext
Wend
End If
Error:
End Sub
Function pubNumerico(pKeyAscii As Integer, Optional pTxt As TextBox, Optional pDecimales As Integer) As Integer
' Agregar esta función al evento Keypress de un Textbox
' para validar que se esté tecleando un número ya sea entero o decimal
' requerido:
' pKeyAscii es el código Ascii del caracter
' opcionales:
' pTxt Texbox donde se está capturando (sólo en caso de que ocupe decimales)
' pDecimales Cantidad de dígitos decimales permitidos (sólo en caso de que ocupe decimales)
If (IsMissing(pDecimales) Or pDecimales = 0) Or IsMissing(pTxt) Then
' captura de un número entero
If InStr("0123465789", Chr(pKeyAscii)) > 0 Or pKeyAscii = 8 Then
' es número o backspace -> OK
pubNumerico = pKeyAscii
Else
' es otro tipo de caracter -> ANULAR
Beep
pubNumerico = 0
End If
Else
' inicia captura de número con decimales
'validación
If pTxt.MaxLength = 0 Then
MsgBox "Especificar propiedad Maxlength del TextBox " & pTxt.Name, vbCritical, "Error Interno"
pubNumerico = 0
Exit Function
End If
If InStr(pTxt, ".") > 0 And Chr(pKeyAscii) = "." Then
' están tratando de teclear un punto y ya hay uno
Beep
pubNumerico = 0
Exit Function
End If
'validación
If InStr(pTxt, ".") > 0 And pTxt.SelStart > InStr(pTxt, ".") And Len(Right(pTxt, Len(pTxt) - InStr(pTxt, "."))) >= pDecimales And pKeyAscii <> 8 Then
' están tratando de teclear más decimales que los permitidos por pDecimales
Beep
pubNumerico = 0
Exit Function
End If
'validación
If InStr("0123465789", Chr(pKeyAscii)) > 0 And Val(Trim(pTxt & Chr(pKeyAscii))) > Val(String(pTxt.MaxLength - pDecimales - 1, "9") & "." & String(pDecimales, "9")) Then
' es un número mayor que el permitido (según maxlength del texto y cantidad de decimales)
Beep
pubNumerico = 0
Exit Function
End If
If InStr("0123465789.", Chr(pKeyAscii)) > 0 Or pKeyAscii = 8 Then
' caracter válido
pubNumerico = pKeyAscii
Else
' caracter no válido
Beep
pubNumerico = 0
End If
End If
End Function
Espero alguien pueda ayudarme ya tngo rato batallandole con esta parte.