Visual Basic - Declaracion de un array multidimensional

Life is soft - evento anual de software empresarial
 
Vista:

Declaracion de un array multidimensional

Publicado por David Molina (23 intervenciones) el 10/10/2008 19:01:37
tengo un pequeño proble. estoy conectado a una base de datos, y quiero migrar datos de una tabla a otra exactamente igual con los mismos campos. el problema es este como no se el procedimiento, se me ocurrio migrar los datos a una matriz temporal (un array multidimensional) y despues cerrar la conexion con esa tabla y abrir la otra y pasar los datos del array a la otra tabla.

mi problemas es de que no se cuantas filas tiene la tabla ya que recibe BASTANTES datos diariamente, es decir cuando quiero crear el array antes con un recordcount identifico cuantos registros o filas tiene la tabla que voy a copiar, esa cantidad la guardo en una variable de tipo integer llamada i

cuando quiero declarar el array asi

Dim Array(i,10) As String

me tira un problema que los parametros del array deben ser constantes..

espues intente crear una constante con el valor del RecordCount pero me tira el mismo error, necesito ayuda!!!
o si alguien sabe como hacer esto de otra forma porfavor diganmelo!!!!

de antemano gracias por leer esto.
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

RE:Declaracion de un array multidimensional

Publicado por ingeniero ramirez (34 intervenciones) el 10/10/2008 19:32:52
No necesitas tanta parafernalia para hacer eso, simplemente ejecuta esta consulta en la conexión a la base de datos:

"INSERT INTO TablaDestino SELECT TablaOrigen.* FROM TablaOrigen"

y se copiarán en la tabla destino todos los datos de la tabla origen.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declaracion de un array multidimensional

Publicado por David Molina (23 intervenciones) el 10/10/2008 23:15:37
ok, pero no se como hacerlo, me puse a inventar e hice este codigo. ahora quiero ademas de copiar, cerciorarme de borrar todos los datos de la tabla "ReportadosRecord" para poder reemplazarlos con los datos de la tabla "Record". Quise hacerlo con un "Do While" y con el rs2.delete que observaste pero me tira error y me da el siguiente mensaje "MaxLocksPerFile no se que..." pero me gustaria que me instruieras en el codigo de como reemplazar los datos y de borrar tooodos los registros de la tabla ReportadosRecord.

Adjunto el codigo en el que estoy trabajando.

todo sucede en el evento Form_Load

Private Sub Form_Load()
Dim cn As New ADODB.Connection 'Declaramos la variable Conexion de la libreria ADO
Dim rs As New ADODB.Recordset 'Declaramos la variable RecordSet de la libreria ADO
Dim rs2 As New ADODB.Recordset ''Declaramos la variable RecordSet2 de la libreria ADO
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:GPS.mdb" 'Establece la conexion con la base de datos
rs.Source = "record" 'declaramos a que tablas van a circular
rs2.Source = "ReportadosRecord"
rs.CursorType = adOpenKeyset
rs2.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
rs2.LockType = adLockOptimistic
rs.Open "select * from record", cn
rs2.Open "select * from Reportadosrecord", cn
rs.MoveFirst

Do Until rs2.EOF
rs2.Delete
rs2.MoveNext
Loop

rs2.AddNew

'Este codigo traslada los datos de una tabla a otra
Do Until rs.EOF
rs2.Fields("UserID") = rs.Fields("UserID")
rs2.Fields("Lat") = rs.Fields("Lat")
rs2.Fields("Lon") = rs.Fields("Lon")
rs2.Fields("Status") = rs.Fields("Status")
rs2.Fields("E/W") = rs.Fields("E/W")
rs2.Fields("Date") = rs.Fields("Date")
rs2.Fields("TimeStamp") = rs.Fields("TimeStamp")
rs2.Fields("N/S") = rs.Fields("N/S")
rs2.Fields("Speed") = rs.Fields("Speed")
rs2.Fields("Course") = rs.Fields("Course")
rs2.Fields("KeyNo") = rs.Fields("KeyNo")
rs2.Update
rs.MoveNext
rs2.MoveLast
rs2.AddNew
Loop

rs.Close
'rs2.Close
cn.Close

End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declaracion de un array multidimensional

Publicado por ingeniero ramirez (34 intervenciones) el 11/10/2008 10:27:34
Todo eso lo puedes hacer con apenas cuatro líneas de código y sin necesidad de abrir recordsets ni hacer bucles.

Private Sub Form_Load()
Dim cn As New ADODB.Connection 'Declaramos la variable Conexion de la libreria ADO
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:GPS.mdb" 'Establece la conexion con la base de datos

cn.Execute "DELETE FROM ReportadosRecord"
cn.Execute "INSERT INTO ReportadosRecord SELECT record.* FROM record"

cn.Close
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declaracion de un array multidimensional

Publicado por David Molnia (23 intervenciones) el 11/10/2008 15:45:21
Wow..!!!! Es totalmente sencillo, la potencia del lenguaje SQL es muy buena, ahora si mi tabla reportados record posee mas campos que la tabla record? es decir, la tabla record tiene todos los campos escritos en el codigo anterior, pero la tabla reportados record tiene 8 campos demas. estan sentencias no afectarian en lo absoluto a la tabla ReportadosRecord verdad? De antemano, muchisimas gracias por la valiosa informacion, me has simplificado la vida =D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declaracion de un array multidimensional

Publicado por ingeniero ramirez (34 intervenciones) el 11/10/2008 18:02:49
La tabla de destino puede tener 8 o más campos que la tabla origen, para que funcione el código anterior, sólo un par de observaciones:

1ª Los campos de tabla destino que no están en tabla origen, tienen que estar al final.

2ª Si un campo de tabla destino, que no esté incluido en tabla origen, tiene la propiedad 'Requerido' a Sí y la propiedad 'Valor predeterminado' está en blanco, dará error (es lógico).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declaracion de un array multidimensional

Publicado por David Jonathan Molina Godoy (23 intervenciones) el 14/10/2008 21:24:49
Ingeniero Ramirez, y si en todo caso, deseo copiar los datos que esten dentro de una o dos fechas especificas? esto me haria la vida super facil y feliz!!! muchisimas gracias!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Declaracion de un array multidimensional

Publicado por Walinton Cambronero (1 intervención) el 12/10/2008 02:47:29
Hola amigo, a la hora de crear el arreglo si debes utilizar unos valores constantes, sin embargo en visual basic existe la sentencia redim que te permite redimensionar un vector. Asi por ejemplo puedes declarar un vector con tamano 0:

dim vector() as string

luego, cuando ya sepas el tamano deseado simplemete

redim vector(nuevo_tamano)

y listo.

espero q sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar