problema con inserción
Publicado por JoseM (1 intervención) el 10/11/2005 18:59:28
Hola, estoy intentando insertar datos en una tabla ya creada de una base de datos access.
Cuando ejecuto me da un error diciendo que "no coindiden los tipos", pego el código haber si alguien da con el error .... (en mayúsculas pongo donde me da el error en el código)
---------------------------------------------------------------------------------------------
Option Explicit
Private db1 As Database
Private rs As Recordset
Dim WithEvents adoPrimaryRS As Recordset
Dim mbChangedByCode As Boolean
Dim mvBookMark As Variant
Dim mbEditFlag As Boolean
Dim mbAddNewFlag As Boolean
Dim mbDataChanged As Boolean
Private Function comparar(a As String, b As String)
If InStr(a, b) <> 0 And Len(a) = Len(b) Then
comparar = 1
Else
comparar = 0
End If
End Function
-----------------------------------------------------------------------------------------------------
Private Sub Command1_Click()
Dim strA As String
Dim strB As String
Dim id As Double
Dim arrayA() As String
Dim arrayB() As String
Dim i As Integer
Dim j As Integer
Dim contador As Integer
Dim registro As Double
Dim num_caracA As Integer
Dim num_caracB As Integer
Dim pasa As Double
Dim no_pasa As Double
Const sPathBase As String = "C:\db197.MDB"
Set db1 = OpenDatabase(sPathBase)
Set rs = db1.OpenRecordset("SELECT * FROM coinciden", dbOpenDynaset) ¡¡AQUÍ ME DA EL ERROR!!!!!!!!!
pasa = 0
no_pasa = 0
Do While registro < 11
'comienzo bucle BBDD
id = txtFields(0).Text
strA = txtFields(1).Text
strB = txtFields(2).Text
arrayA = Split(strA, " ")
arrayB = Split(strB, " ")
contador = 0
For i = LBound(arrayA) To UBound(arrayA)
For j = LBound(arrayB) To UBound(arrayB)
num_caracA = Len(arrayA(i))
num_caracB = Len(arrayB(j))
If num_caracA <= 3 Then
'MsgBox "la cadena es menor a 3 caracteres"
Exit For
End If
'MsgBox arrayA(i) & " " & num_caracA & arrayB(j) & " " & num_caracB
comparar arrayA(i), arrayB(j)
If comparar(arrayA(i), arrayB(j)) = 1 Then
contador = contador + 1
Exit For
End If
Next
Next
If contador >= 3 Then
'MsgBox "condicion superada"
' Escribir en tabla
With rs
.AddNew
' Añadimos algún texto, para saber que es un nuevo dato
.Fields("id") = id
.Fields("nombre1") = strA
.Fields("nombre2") = strB
' Actualizamos los datos, para que se graben en el recordset
.Update
End With
pasa = pasa + 1
Else
'MsgBox "condicion NO superada"
no_pasa = no_pasa + 1
End If
'MsgBox pasa
cmdNext_Click
registro = registro + 1
'Fin bucle BBDD
Loop
MsgBox pasa
End Sub
-----------------------
Private Sub Form_Load()
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=C:\db197.mdb;"
Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select Campo1,Campo3,Campo9 from LOSASINDUPLICADOS", db, adOpenStatic, adLockOptimistic
Dim oText As TextBox
'Enlaza los cuadros de texto con el proveedor de datos
For Each oText In Me.txtFields
Set oText.DataSource = adoPrimaryRS
Next
mbDataChanged = False
End Sub
--------------------------------------------------------------------------------
pues lo que intento es coger los campos que quiero tras hacer un proceso de comparación y meterlo en una nueva tabla llamada coinciden.
¿alguna ayuda?
Cuando ejecuto me da un error diciendo que "no coindiden los tipos", pego el código haber si alguien da con el error .... (en mayúsculas pongo donde me da el error en el código)
---------------------------------------------------------------------------------------------
Option Explicit
Private db1 As Database
Private rs As Recordset
Dim WithEvents adoPrimaryRS As Recordset
Dim mbChangedByCode As Boolean
Dim mvBookMark As Variant
Dim mbEditFlag As Boolean
Dim mbAddNewFlag As Boolean
Dim mbDataChanged As Boolean
Private Function comparar(a As String, b As String)
If InStr(a, b) <> 0 And Len(a) = Len(b) Then
comparar = 1
Else
comparar = 0
End If
End Function
-----------------------------------------------------------------------------------------------------
Private Sub Command1_Click()
Dim strA As String
Dim strB As String
Dim id As Double
Dim arrayA() As String
Dim arrayB() As String
Dim i As Integer
Dim j As Integer
Dim contador As Integer
Dim registro As Double
Dim num_caracA As Integer
Dim num_caracB As Integer
Dim pasa As Double
Dim no_pasa As Double
Const sPathBase As String = "C:\db197.MDB"
Set db1 = OpenDatabase(sPathBase)
Set rs = db1.OpenRecordset("SELECT * FROM coinciden", dbOpenDynaset) ¡¡AQUÍ ME DA EL ERROR!!!!!!!!!
pasa = 0
no_pasa = 0
Do While registro < 11
'comienzo bucle BBDD
id = txtFields(0).Text
strA = txtFields(1).Text
strB = txtFields(2).Text
arrayA = Split(strA, " ")
arrayB = Split(strB, " ")
contador = 0
For i = LBound(arrayA) To UBound(arrayA)
For j = LBound(arrayB) To UBound(arrayB)
num_caracA = Len(arrayA(i))
num_caracB = Len(arrayB(j))
If num_caracA <= 3 Then
'MsgBox "la cadena es menor a 3 caracteres"
Exit For
End If
'MsgBox arrayA(i) & " " & num_caracA & arrayB(j) & " " & num_caracB
comparar arrayA(i), arrayB(j)
If comparar(arrayA(i), arrayB(j)) = 1 Then
contador = contador + 1
Exit For
End If
Next
Next
If contador >= 3 Then
'MsgBox "condicion superada"
' Escribir en tabla
With rs
.AddNew
' Añadimos algún texto, para saber que es un nuevo dato
.Fields("id") = id
.Fields("nombre1") = strA
.Fields("nombre2") = strB
' Actualizamos los datos, para que se graben en el recordset
.Update
End With
pasa = pasa + 1
Else
'MsgBox "condicion NO superada"
no_pasa = no_pasa + 1
End If
'MsgBox pasa
cmdNext_Click
registro = registro + 1
'Fin bucle BBDD
Loop
MsgBox pasa
End Sub
-----------------------
Private Sub Form_Load()
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=C:\db197.mdb;"
Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select Campo1,Campo3,Campo9 from LOSASINDUPLICADOS", db, adOpenStatic, adLockOptimistic
Dim oText As TextBox
'Enlaza los cuadros de texto con el proveedor de datos
For Each oText In Me.txtFields
Set oText.DataSource = adoPrimaryRS
Next
mbDataChanged = False
End Sub
--------------------------------------------------------------------------------
pues lo que intento es coger los campos que quiero tras hacer un proceso de comparación y meterlo en una nueva tabla llamada coinciden.
¿alguna ayuda?
Valora esta pregunta


0