que tal, despues de tanto tiempo, dije que volvia y volvi
mi duda es la siguiente
estoy haciendo una aplicacion en vb6 usando sql server y queiro listar las db, utilizo este codigo:
rst.Open "SELECT name FROM master.dbo.sysdatabases", cnn, adOpenDynamic, adLockOptimistic
With cbo_db
.Clear
For Each tField In rst.Fields
.AddItem tField.Name
Next
.ListIndex = 0
End With
rst.Close
cbo_db es un combo, y lo unico que me lista es la palabra "name", como hago para que me liste los datos de la columna name?
me srian de gran ayuda ya que estoy en el trabajo ahora xd
saludos y gracias
me parece que tendías que abrir la tabla "sysdatabase", y listar los registros que contiene.
Option Explicit
Private Sub Form_Load()
Dim BD As Connection
Dim Tb As Recordset
Dim conexion As String
Set BD = New Connection
conexion = "Provider=SQLOLEDB.1;" & _
"Persist Security Info=False;" & _
"User ID= SA;" & _
"pwd=;" & _
"Initial Catalog= Master;" & _
"Data Source=Servidor"
On Local Error Resume Next
BD.Open conexion
If Err Then
MsgBox Err.Number & vbCrLf & Err.Description
Exit Sub
End If
On Local Error GoTo 0
Set Tb = New Recordset
Tb.Open "SELECT Name FROM Sysdatabases", BD
Combo1.Clear
While Not Tb.EOF
Combo1.AddItem Tb!Name
Tb.movenext
Wend
Tb.Close
BD.Close
set Tb = nothing
set BD = nothing
End Sub
graciaspor el codigo, lo probe y me sigue dando el mismo resultado,...
lo que quiero hacer es esto
---------------------
| Numero
| uno
| dos
| tre
| cuatro
| cinco
| seis
--------------------
Dim tField As ADODB.Field
rst.Open "select pub_codcontrato from vsp_contrcue", cnn, adOpenDynamic, adLockOptimistic
combo1.Clear
For Each tField In rst.Fields
combo1.AddItem tField.Name
Next
combo1.ListIndex = 0
rst.Close
lo que me muestra con eso no son los "uno", "dos", "tres", etc
me muestra el nombre del campo "pub_codcontrato"
si alguien me dice como mostrar los datos y no el nombre del campo se lo agradeceria
bye
listo!!
ya lo descubri
gracias de todos modos
bye bye
nos vemo en ela p`roxima
para el que no lo sepa es así... xD
tField!Name
o
tfield.fields("Name") 'se puede agregar .value
bueno sigo...
con respecto a la forma que yo use.. es la siguiente:
While frm1.rst.EOF
frm1.rst.MoveFirst
txt_dimccodigo = frm1.rst(0)
txt_dimcdescripcion = frm1.rst(1)
txt_dimcpadre = frm1.rst(2)
txt_dimccuenta = frm1.rst(3)
txt_dimccontrato = frm1.rst(4)
txt_dimcconcepto = frm1.rst(5)
txt_dimcproceso = frm1.rst(6)
frm1.rst.MoveNext
Wend
y con eso veo los datos pero solo de la primera fila
osea...
-------------------------
| Numero | Letra
| uno | a |
| dos | b |
| tre | c |
| cuatro | d |
| cinco | e |
| seis | f |
----------------------
con ese codigo recibiria solo el dato numero "uno" y el dato letra "a"
la pregunta es... como veo las otras filas?
si alguien sabe... que me pase la vos
saludos
bye
#Edit: gracias Hans el Topo, como siempre respondiendo
rst.movenext
el movefirst nose para que lo pones puesto que te envia al primer registro todo el rato...
los bucles de lectura de un recordset suelen ser así
while not rst.eof
'código que quieras para ese registro
'avanzamos registro
rst.movenext
wend
Citar#Edit: gracias Hans el Topo, como siempre respondiendo
respondo cuando tengo tiempo y me apetece xD la mayoría de estos temas estan resueltos ya y por eso no se suelen responder pero weno digamos que hoy hice una excepción xD
barbaro, vamos mejorando
yo necesito avanzar en los registros, lo que ahora uso es esto:
voy mejorando en este tema :P
para adelantar :
If Not frm1.rst.EOF Then
txt_dimccodigo = frm1.rst(0)
txt_dimcdescripcion = frm1.rst(1)
txt_dimcpadre = frm1.rst(2)
txt_dimccuenta = frm1.rst(3)
txt_dimccontrato = frm1.rst(4)
txt_dimcconcepto = frm1.rst(5)
txt_dimcproceso = frm1.rst(6)
frm1.rst.MoveNext
End If
y para retroceder:
If Not frm1.rst.EOF Then
frm1.rst.MovePrevious
txt_dimccodigo = frm1.rst(0)
txt_dimcdescripcion = frm1.rst(1)
txt_dimcpadre = frm1.rst(2)
txt_dimccuenta = frm1.rst(3)
txt_dimccontrato = frm1.rst(4)
txt_dimcconcepto = frm1.rst(5)
txt_dimcproceso = frm1.rst(6)
End If
el tema que para retroceder no funciona, osea... retrocede el registro pero no lo carga en los textbox
hace rato largo programo en vb y estoy verdisimo con vb y sql, por eso pregunto cosas que yo se que no son dificiles
gracias again Hans el Topo :)
bye...
con el if solo recorres un registro... el while recorre todos...
y el avance o retroceso va al final, ya que si retroces y no hay nada que leer intentas leer vacio... por algo tiene esa estructura el bucle
'hacia adelante
'vamos al primero
rst.movefirst
'mientras existan registros
while not rst.eof
'código que quieras para ese registro
'avanzamos registro
rst.movenext
wend
'hacia atrás
'vamos al último
rst.movelast
'mientras existan registros
while not rst.BOF
'código que quieras para ese registro
'avanzamos registro
rst.MovePrevious
wend
CitarBOF indica que la posición del registro actual está antes del primer registro de un objeto Recordset.
EOF indica que la posición del registro actual está después del último registro de un objeto Recordset.
copipasteo la ayuda...
CitarMétodos MoveFirst, MoveLast, MoveNext y MovePrevious
Pasa al primer, último, siguiente o anterior registro de un objeto Recordset especificado y lo convierte en el registro actual.
Sintaxis
recordset.{MoveFirst | MoveLast | MoveNext | MovePrevious}
Comentarios
Utilice el método MoveFirst para mover la posición del registro actual al primer registro del Recorset.
Utilice el método MoveLast para mover la posición del registro actual al último registro del Recorset. El objeto Recordset tiene que aceptar marcadores o movimiento hacia atrás; si no, la llamada al método generará un error.
Utilice el método MoveNext para mover la posición del registro actual un registro hacia delante (hacia el final del Recordset). Si el último registro es el registro actual y llama al método MoveNext, ADO establece el registro actual a la posición posterior al último registro del Recordset (EOF es True). El intento de avanzar cuando la propiedad EOF ya sea True genera un error.
Utilice el método MovePrevious para mover la posición del registro actual un registro hacia atrás (hacia el principio del recordset). El objeto Recordset tiene que aceptar marcadores o movimiento hacia atrás; si no, la llamada al método generará un error. Si el primer registro es el registro actual y llama al método MovePrevious, ADO establece el registro actual a la posición anterior al primer registro del recordset (BOF es True). El intento de retroceder cuando la propiedad BOF ya sea True genera un error. Si el objeto Recordset no acepta marcadores o movimiento hacia atrás, el método MovePrevious generará un error.
Si el recordset es de tipo Forward-only y quiere recorrerlo hacia adelante y hacia atrás, puede utilizar la propiedad CacheSize para crear una caché de registros que acepte el movimiento hacia atrás mediante el método Move. Como los registros de la caché están guardados en la memoria, tiene que evitar guardar en la caché más registros de los estrictamente necesarios. Puede invocar el método MoveFirst en un objeto Recordset de tipo Forward-only; si lo hace, el proveedor vuelve a ejecutar el comando que generó el objeto Recordset.
chabon!!!
muchas gracias por la data, por la ayuda
claro, con IF solo leo un registro, y eso era lo que queria, no queria leer todos, ya que tengo que mostrar uno solo, y que el usuario valla viendo uno a uno como el quiera
te agradezco muchisimo por tu tiempo y por la info que pusiste al final, me sirvio de mucho
hasta la proxima
bye....