publicado el 26 de octubre12 años Cómo puedo pasar una consulta realizado a una tabla de acces a una variable o a un array; el utilizar una u otra dependerá del tipo de consulta. Al día de hoy la puedo pegar en una hoja de excel pero no se cómo asignarla directamente la consulta a una variable. eje. Dim flotante as Variant Modifica = "SELECT Clave, Costo_P_A_3 FROM EXIST_06 WHERE Costo_P_A_3<0" rs.Open Modifica, cn ActiveSheet.Cells(17, 6).CopyFromRecordset rs flotante = range("F17:....).value[/CODE] Gracias...
publicado el 27 de octubre12 años Hola! Una vez que copiaste el contenido del recordset en un rango, procederias hacer lo siguiente: dim buffer as Variant ActiveSheet.Cells(17, 6).CopyFromRecordset rs 'copias el recordset en el rango... with ActiveSheet.Cells(17, 6) buffer = .CurrentRegion 'copias el contenido de la region contigua en buffer, que es de tipo variant .CurrentRegion = vbnullstring 'borras toda la region contigua end with [/CODE] Espero te sea de ayuda!
publicado el 29 de octubre12 años Autor Gracias, me gustaría omitir el paso intermedio (pegarlo a la hoja) pero bueno, de todos modos muchas gracias por el aporte. Saludos...
publicado el 29 de octubre12 años "jazh83 dijo: Gracias, me gustaría omitir el paso intermedio (pegarlo a la hoja) pero bueno, de todos modos muchas gracias por el aporte. Saludos... El ejemplo que te di se me hizo mas facil... pero si no quieres pegar en celdas y luego cargar en memoria, podrias (no estoy seguro) un for each para recorrer rs, tendrias que probar para ver si me funciona... A mi se me hizo mas facil pegar en la hoja y de ahi cargar en memoria con solo dos intrucciones. Suerte!
publicado el 30 de octubre12 años TodaLaConsulta = rs.GetRows en lugar de Rango.CopyFromRecordset rs rs.GetRows crea un array de dos dimensiones columna/fila. TodaLaConsulta en debe definirse así: Dim TodaLaConsulta as Variant
publicado el 30 de octubre12 años Autor Gracias digitalboy y Antonio por su aportación y timepo prestado para con su servidor. Saludos...
publicado el 30 de octubre12 años "Macro Antonio dijo: TodaLaConsulta = rs.GetRows en lugar de Rango.CopyFromRecordset rsrs.GetRows crea un array de dos dimensiones columna/fila. TodaLaConsulta en debe definirse así: Dim TodaLaConsulta as Variant Bien! eso no lo sabia! gracias por la aportacion!
publicado el 1 de noviembre12 años Autor Utilicé la instrucción y me funciona, sólo que cuando trato de asignarle una nueva tabla a la variable me indica que el valor BOF o EOF es TRUE. For e = 1 To 3 For i = 0 To Cells(1, 1) Modifica = "SELECT COSTO,CANT, SIGNO FROM MINVE06 WHERE ALMACEN=" & e & " AND CVE_ART='" & matriz(0, i) & "'" rsF.Open Modifica, dBF matriz_tabla = rsF.GetRows rsF.Close: Set rsF = Nothing COSTO_OPER = 0 For Flotante = 0 To UBound(matriz_tabla, 2) COSTO_OPER = COSTO_OPER + (Val(matriz_tabla(0, Flotante)) * Val(matriz_tabla(1, Flotante)) * Val(matriz_tabla(2, Flotante))) Next CANTIDAD = 0 For Flotante = 0 To UBound(matriz_tabla, 2) CANTIDAD = CANTIDAD + (Val(matriz_tabla(1, Flotante)) * Val(matriz_tabla(2, Flotante))) Next If COSTO_OPER = 0 Then ElseIf CANTIDAD = 0 Then ActiveWorkbook.Worksheets("Error").Cells(ierror, 1) = matriz(i, 0) ActiveWorkbook.Worksheets("Error").Cells(ierror, 2) = COSTO_OPER ActiveWorkbook.Worksheets("Error").Cells(ierror, 3) = CANTIDAD ActiveWorkbook.Worksheets("Error").Cells(ierror, 4) = e ierror = ierror + 1 Else COSTO_OPER = COSTO_OPER / CANTIDAD End If Modifica = "UPDATE COSTO_PROM_ALMACEN SET Costo_P_A_" & e & " =" & COSTO_OPER & " WHERE CVE_ART = '" & matriz(0, i) & "'" dBA.Execute Modifica 'Inserta registro Next Next[/CODE] Gracias...
publicado el 2 de noviembre12 años El problema lo tienes porqué el resultado de la Select es nulo, debes condicionar la sentencia .Getrows de esta manera: [COLOR=#333333] If Not rsF.Eof = True Then matriz_tabla = rsF.GetRows [/COLOR] 'y a contunuación el resto del proceso End If [/CODE]
publicado el 1 de abril11 años "Macro Antonio dijo: TodaLaConsulta = rs.GetRows en lugar de Rango.CopyFromRecordset rsrs.GetRows crea un array de dos dimensiones columna/fila. TodaLaConsulta en debe definirse así: Dim TodaLaConsulta as Variant Hola! oye marco... realmente con este metodo se copia todo el contenido del recordset a la matriz, por que lo he intentado y solo se vacia un registro a la vez!
publicado el 2 de abril11 años ___________________________________________________________ Ejemplo de funcionamiento del método GetRows de ADO. Te adjunto también la base de datos con la que lo he probado. '______________________________________________________ Dim CONEXION As Object Dim CURSOR As Object Dim COMANDO As Object Dim SQL As Variant Dim DATOS As Variant Dim VACIO As Boolean Dim FILA As Long Dim COLUMNA As Long '______________________________________________________ Sub EjemploGetRows() Set CONEXION = New ADODB.Connection CONEXION.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="C:\BASE DE DATOS.mdb;" SQL = "SELECT * FROM AGENDA" VACIO = ADO_OBTENER_RECORDSET(CONEXION, SQL) If VACIO = False Then For FILA = 0 To UBound(DATOS, 2) For COLUMNA = 0 To UBound(DATOS, 1) Cells(FILA + 1, COLUMNA + 1) = DATOS(COLUMNA, FILA) Next Next End If CONEXION.Close Set CONEXION = Nothing End Sub '______________________________________________________ Private Function ADO_OBTENER_RECORDSET(CONEXION, SQL) As Boolean ADO_OBTENER_RECORDSET = True Set CURSOR = New ADODB.Recordset Set COMANDO = New ADODB.Command With COMANDO .ActiveConnection = CONEXION .CommandText = SQL .CommandType = adCmdText End With Set CURSOR = COMANDO.Execute If Not CURSOR.EOF Then DATOS = CURSOR.GetRows '<========================= ADO_OBTENER_RECORDSET = False End If Set CURSOR = Nothing Set COMANDO = Nothing End Function [/CODE] . BASE DE DATOS.rarFetching info...
publicado el 3 de abril11 años muchas gracias por tu respuesta! si en efecto funciona... lo que pasa es que cuando utilizas getrows debes especificar el numero de registros que se cargaran en la matriz, asi fue como me funciono! Lo que pasa es que desde Excel mandaba a llamar a un procedimiento almacenado de la base de datos y el recordset obtenido cargarlo a una matriz y luego esta cargarla directamente a un combobox. Ya lo logre, espero con mas tiempo mostrar el codigo y el ejemplo en mi blog. Saludos!
Cómo puedo pasar una consulta realizado a una tabla de acces a una variable o a un array; el utilizar una u otra dependerá del tipo de consulta.
Al día de hoy la puedo pegar en una hoja de excel pero no se cómo asignarla directamente la consulta a una variable.
eje.
Gracias...