Visual Basic - problema con inserción

Life is soft - evento anual de software empresarial
 
Vista:

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?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder