Combobox en Visual basic 6.0

Hola edusaligari, estoy haciendo una aplicación en visual basic 6.0 conectado con una base de datos en sql 2000. Lo que pasa es lo siguiente:
Quisiera que al momento de cargar el combobox me aparezca los nombres, pero que al momento de guardar el combobox se guarde con el código de ese nombre.
Te adjunto el código para ver que me esta faltando. Agradeciéndote de antemano.
Private Sub Form_Load()
Dim BD As ADODB.Connection
Dim rs As ADODB.Recordset
Set BD = New ADODB.Connection
Set rs = New ADODB.Recordset
BD.Open "Provider= SQLOLEDB; Initial Catalog= BETTELING;Data Source= (local); integrated security=SSPI; persist security info= true;"
rs.CursorLocation = adUseClient
rs.Open "SELECT * FROM Proveedor", BD, adOpenStatic, adLockOptimistic
With rs
Do Until .EOF
Combo4.AddItem .Fields(1)
.MoveNext
Loop
End With

rs.Close
La parte de negro es donde cargo el combo con el campo 1 de la tabla proveedor.
1

1 respuesta

1
Respuesta de
Estimado.
Agrega a tu código:
Combo4.ItemData(Combo4.NewIndex) = .Fields("ID_Nombre").Value
Donde "ID_Nombre" es el nombre del campo que contiene el código.
Si tienes dudas me lo haces saber.
Saludos.
Eduardo.
Hola amigo Eduardo gracias por el código pero al momento de entrar en el formulario me suelta el siguiente error
Error '13' en tiempo de ejecución: No coinciden los tipos
¿A qué se debe?
Estimado.
Pues que el tipo de datos que intentas poner no corresponde al del objeto.
Debes convertir el valor.
Te dejo algunos links para que estudies más el caso:
http://msdn.microsoft.com/es-es/library/cc451022(VS.71).aspx
http://www.todoexpertos.com/categorias/tecnologia-e-internet/bases-de-datos/sql-server/respuestas/450314/como-lleno-el-itemdata-de-un-combobox
Para que veas más ejemplos de utilización:
http://www.google.com/search?aq=f&sourceid=chrome&ie=UTF-8&q=itemdata
Si tienes dudas me lo haces saber.
Saludos.
Eduardo.
Hola Eduardo muchas gracias por los Links, pero quisiera saber si tiene que ver con el tipo de dato de mi código, el tipo de dato de mi código es varchar(50) . ya que tengo un código autogenerado.
Te adjunto el código para saber que dato debería convertirlo
Option Explicit
Public con As ADODB.Connection
Public com As ADODB.Command
Public rs As ADODB.Recordset
Public cod As String
Public fecha As Date
Public tipo As String
Public Num As String
Public prov As String
Public concep As String
Public ruc As String
Public impo As Double
Public obs As String
Private Sub Command1_Click()
Dim rs As ADODB.Recordset
fecha = Me.DTPicker1.Value
tipo = Me.Combo3.Text
Num = Me.Text6.Text
prov = Me.Combo4.Text
concep = Me.Text8.Text
ruc = Me.Text10.Text
cod = ruc & Left(tipo, 3) ' 14 espacios
impo = Val(Me.Text11.Text)
obs = Me.Text12.Text
Set con = New ADODB.Connection
con.Open "Provider= SQLOLEDB; Initial Catalog= BETTELING;Data Source= (local); integrated security=SSPI; persist security info= true;"
Set com = New ADODB.Command
com.CommandText = "INSERT INTO
FACBOL(Codigo,Fecha,Tipo,Num,Prove,Concepto,RUC,Importe,Observacion)VALUES ('" & cod & "','" & fecha & "','" & tipo & "','" & Num & "','" & prov & "','" & concep & "','" & ruc & "','" & impo & "','" & obs & "')"
com.ActiveConnection = con
com.Execute
con.Close
MsgBox ("Registro Realizado Con Exito")
Me.DTPicker1.CheckBox = True
Me.DTPicker1.CheckBox = False
Me.Combo3.Text = ""
Me.Text6.Text = ""
Me.Combo4.Text = ""
Me.Text8.Text = ""
Me.Text10.Text = ""
Me.Text11.Text = ""
Me.Text12.Text = ""
End Sub
Sr. ¿Eduardo lo que esta en negrita es mi código que debería cambiar quisiera saber como convertirlo? Disculpe las molestias
Estimado.
Lo que pasa que ItemData es de tipo Integer, si tu le pasas o asignas de tipo String da el error que mencionas.
Debes convertir el valor a Integer, CInt te puede ayudar.
Si tienes dudas me lo haces saber.
Saludos.
Eduardo.
Muchas Gracias amigo Eduardo, pero de verdad me sigue botando el error el problema es que yo tengo dos formularios en uno registro el código del proveedor, ¿la pregunta es donde va el CInt? en donde lo registro o donde =S
Estimado.
Que perdido andas, de verdad... XD
CINT es una función de VB que devuelve una cadena en Integer (Entero), siempre y cuando esta se pueda convertir, es decir, si le pasas letras dará error.
Uso:
Dim Entero As Integer
Entero = CInt("9829")
En tu caso sería para el valor que le darás al Item Data desde la variable.
Combo4.ItemData(Combo4.NewIndex) = CInt(.Fields("ID_Nombre").Value)
Si tienes dudas me lo haces saber.
Saludos.
Eduardo.
¿Disculpa pucha pero sigue saliendo error del desbordamiento mira yo tenia un código que hacia con el ruc + PR + 1 ia lo kite y sale que erro de tipo de datos dime en sql tengo que poner tipo de dato INT al código de proveedor o puede ser varchar?
Estimado.
¿Error de desbordamiento o error de tipo de datos?
Son cosas diferentes.
El código del proveedor puede ser Varchar sin problemas, pero si tiene letras no podrás pasarlo a número entero.
¿Cómo es un código de proveedor?, ponme 1 para verlo.
Si tienes dudas me lo haces saber.
Saludos.
Eduardo.
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Visual Basic o hacer tu propia pregunta: