Perdon, pero esto carece de Logica.
otro entero CC4 en la TABLA2) (....)
sólo si el campo CC4 tiene el valor ‘Válido’
CC4 dice que es ENTERO, osea solo acumula Numeros de el -32,768 hasta 32,767.
Eso cualquiera que vea programacion lo sabe, porque esto se ve antes de aprender que es un IF
AHora si me dice que es ENTERO, por lo que nomas le puedo poner numeros
¿Como o en que dimension o En que sueño un variable ENTERA (SOLO NUMEROS) va a contener "Válido" que es una cadena de caracteres?
WTF???
Ya desde ahi arrancamos con un pequeño problema, porque la tabla CC4 JAMAS!!!!!!!!!!! va a contener "Válido" SQL Server, Oracle o Access JAMAS te van a permitir poner una Cadena de caracteres en donde los registros nomas pueden ser ENTEROS (NUMERICOS).
Segundo no hay metodos para controlar errores descriptos.
Imaginate que yo tengo en la tabla1.
CC1 y CC2 Asi:
1-2
1-3
1-4
1-5
La multimplicacion de estos me dara 2,3,4,5.
Ahora si tengo la Tabla2.
Con supongamos que CC4 es String para poder tener "Válido" porque si no jamas va a funcar esto.
Tengo
CC3 y CC4
0-Válido
0-Válido
0-Inválido
0-Válido
Al momento de hacerlo secuencial, como te pide el Ejercicio, los resultados de forma ordenada se me guardarian asi
CC3 y CC4
2-Válido
3-Válido
0-Inváido
4-Válido
Ahora si te daras cuenta el "5" lo perdi, por una cuestion de que me dice el mismo ejercicio que
La TABLA1 y la TABLA2 tienen la misma cantidad de elementos
Asi que tenemos un drama de OverFlow.
Por otra parte, si queres se puede hacer TAL CUAL lo pide el ejercicio, pero Usas 2 veces una consulta.
Yo te paso el proyecto funcionando.
Pero Modifique los siguiente.
En vez de que CC3 =Caracteres y CC4=Entero
Lo hice al reves.
CC3=Entero y CC4=Caracteres.
Por el motivo que explique mas arriba ( que no se pueden meter caracteres en un capo de solo numeros )
Ahora, este es el codigo.
Código:
Option Explicit
Public Conexion As ADODB.Connection
Public SQL As ADODB.Recordset
'------------------------------------------------------------------------------------
Private Sub Form_Load()
Dim VECTOR() As Integer
Dim i As Integer
Set Conexion = New ADODB.Connection
Conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\FINAL.mdb;Persist Security Info=False"
Set SQL = New ADODB.Recordset
SQL.Open "SELECT DISTINCT (Tabla1.CC1 * Tabla1.CC2) As Mutiplicacion From Tabla1, Tabla2", Conexion, adOpenDynamic, adLockPessimistic
Do While Not SQL.EOF
i = i + 1
SQL.MoveNext
Loop
SQL.MoveFirst
If Not SQL.EOF Then
ReDim VECTOR(1 To i) As Integer
i = 1
Do While Not SQL.EOF
VECTOR(i) = SQL!Mutiplicacion
i = i + 1
SQL.MoveNext
Loop
End If
SQL.Close
i = 1
SQL.Open "SELECT Tabla2.CC3,Tabla2.CC4 From Tabla2 ;", Conexion, adOpenDynamic, adLockPessimistic
Do While Not SQL.EOF
If SQL!CC4 = "Válido" Then
SQL!CC3 = VECTOR(i)
SQL.Update
End If
i = i + 1
SQL.MoveNext
Loop
End Sub Por si no te sale, aca te dejo el proyecto con la base de datos funcionando.
4Shared - DOWNLOAD
O si no tambien te lo dejo adjunto al foro.
PD:
Preguntale a tu profesor como hacer para meter caracteres en un campo de enteros.
Si te responde, por favor decile que se registre en este foro y nos pase el numero de Colegiado o si es ingeniero que nos de el Numero de matricula, asi lo escracho por todas partes.
Me olvidaba
Par para poder usar Access necesitas usar las siguientes referencias.
"Microsoft ActiveX Data Objetcs 2.8 Library" que lo sacas de aca
PROYECTO --> referencias ....
En el Menu de referencias buscas "Microsoft ActiveX Data Objetcs 2.8 Library"
asi
Luego de eso podes Invocar a access
Si no, fijate que en el codigo que te pase, puse:
Código:
Option Explicit
Public Conexion As ADODB.Connection
Public SQL As ADODB.Recordset
el tipo de dato "ADODB". No viene con Visual Basic, pero ahora que tiene referencia de Access
Puede usar "ADO".
Y nosotros usamos "DB"
Por eso "ADODB"
Si no, al no agregar la referencia de Access, no tira un error, porque Visual Basic no es Adivino y no sabe que tipo de dato es ADO, hasta que vos se lo digas.