Ayuda con DB

31/03/2005 - 18:52 por Ricardo Hdz. | Informe spam
Hola Grupo tengo este codigo que me trae informacion de
la db en Access, pero me trae todas las columnas de la
tabla. Este es el codigo, lo que yo ocupo es traer solo
algunas de las columnas, espero haberme dado a entender y
me puedan ayudar

Gracias..

Dim CodigoMoldura As String
CodigoMoldura = Sheets("Sheet1").Range("A19")
Set TargetRange = Cells(9, 5)
Set db = OpenDatabase("C:\Documents and
Settings\administrador\Desktop\GPonce\prueba.mdb")
Set rs = db.OpenRecordset("SELECT * FROM " & "Tabla1"
& _
" WHERE(tabla1.moldura = " & CodigoMoldura & ")" _
, dbReadOnly)
For intColIndex = 0 To rs.Fields.Count - 1
TargetRange.Offset(0, intColIndex).Value =
rs.Fields(intColIndex).Name
Next
' write recordset
TargetRange.Offset(1, 0).CopyFromRecordset rs

Preguntas similare

Leer las respuestas

#1 KL
01/04/2005 - 01:04 | Informe spam
Hola Ricardo,

Prueba el siguiente codigo modificando los valores de la matrizCampos segun
tus necesidades reales. El codigo no lo he probado, pero creo q deberia
funcionar.

Saludos,
KL

Sub test()
Dim CodigoMoldura As String
Dim TargetRange As Range
Dim Campos As Variant
Dim i As Integer, r As Long

Campos = Array(1, 2, 8, 11, 20)

CodigoMoldura = Sheets("Sheet1").Range("A19")
Set TargetRange = Cells(9, 5)
Set Db = OpenDatabase _
("C:\Documents and
Settings\administrador\Desktop\GPonce\prueba.mdb")
Set rs = Db.OpenRecordset("SELECT * FROM " & "Tabla1" & _
" WHERE(tabla1.moldura = " & CodigoMoldura & ")" _
, dbReadOnly)
Do While Not rs.EOF
r = r + 1
For i = LBound(Campos) To UBound(Campos)
On Error Resume Next
TargetRange.Offset.Cells(r, i).Formula = _
rs.Fields(Campos(i)).Value
On Error GoTo 0
Next i
rs.MoveNext
Loop
End Sub
Respuesta Responder a este mensaje
#2 Ricardo Hdz
01/04/2005 - 01:39 | Informe spam
Muchas Gracias KL
El codigo funciona a la perfeccion, perdoname por abusar
de tu asesoria, pero me podrias decir ahora,¿
como asignar en que celdas quiero los diferentes datos?
por ejemplo: la maq. en la celda E5, la moldura en la
celda H6 y asi susecivamente para cada dato una celda en
especifico que sera fija para siempre.

Saludos... y Gracias por tu ayuda
JR

Hola Ricardo,

Prueba el siguiente codigo modificando los valores de la


matrizCampos segun
tus necesidades reales. El codigo no lo he probado, pero


creo q deberia
funcionar.

Saludos,
KL

Sub test()
Dim CodigoMoldura As String
Dim TargetRange As Range
Dim Campos As Variant
Dim i As Integer, r As Long

Campos = Array(1, 2, 8, 11, 20)

CodigoMoldura = Sheets("Sheet1").Range("A19")
Set TargetRange = Cells(9, 5)
Set Db = OpenDatabase _
("C:\Documents and
Settings\administrador\Desktop\GPonce\prueba.mdb")
Set rs = Db.OpenRecordset("SELECT * FROM "


& "Tabla1" & _
" WHERE(tabla1.moldura = " & CodigoMoldura & ")"


_
, dbReadOnly)
Do While Not rs.EOF
r = r + 1
For i = LBound(Campos) To UBound(Campos)
On Error Resume Next
TargetRange.Offset.Cells(r, i).Formula = _
rs.Fields(Campos(i)).Value
On Error GoTo 0
Next i
rs.MoveNext
Loop
End Sub


.

Respuesta Responder a este mensaje
#3 KL
01/04/2005 - 02:00 | Informe spam
Hola Ricardo,

Vamos a ver si nos entendemos. Me pides que te ayude a escribir codigo que
asigne valores de un "recordeset" bidimensional (campos:registros) a unas
celdas fijas segun que campo. Entonces me pregunto ?y que pasa si hay mas de
un registro en tu recordset? ?O es que siempre tienes solo un registro que
ocuparia solo una fila? Ademas ni siquiera para este registro las filas son
las mismas ("...la maq. en la celda E5, la moldura en la celda H6...")

Ahora, si te referias a que para cada registro del recordset el valor de un
campo especifico deberia introducirse a una columna preestablecida (y lo de
E5 y H6 ha sido un error de imprenta) entonces prueba el siguiente codigo.

Saludos,
KL


Sub test()
Dim CodigoMoldura As String
Dim Campos As Variant, Columnas As Variant
Dim i As Integer, r As Long

Campos = Array(1, 2, 8, 11, 20)
Columnas = Array("A", "B", "E", "F", "H")

CodigoMoldura = Sheets("Sheet1").Range("A19")
Set Db = OpenDatabase _
("C:\Documents and Settings\administrador\Desktop\GPonce\prueba.mdb")
Set rs = Db.OpenRecordset("SELECT * FROM " & "Tabla1" & _
" WHERE(tabla1.moldura = " & CodigoMoldura & ")" _
, dbReadOnly)
Do While Not rs.EOF
r = r + 1
For i = LBound(Campos) To UBound(Campos)
On Error Resume Next
Cells(r + 1, Columnas(i)).Formula = _
rs.Fields(Campos(i)).Value
On Error GoTo 0
Next i
rs.MoveNext
Loop
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida