none
CONCATENAR UNA VARIABLE

    Question

  • Hola una consulta quiero guardar varios datos en una veriable quisiera una ayuda les muestro el codigo

    Private Sub dtcCaracteristicas_Click(Area As Integer)
      Dim i As Integer
     
      If Area <> 2 Then Exit Sub
      ID = dtcCaracteristicas.BoundText
     
      List1.AddItem dtcCaracteristicas.Text
    End Sub

    puedo escojer varios elementos del datacombo y capturar su id puedo escojer 1,2,3 elementos pero quiero capturar el id para luego hacer una consulta sql con ese codigo capturado


    Pedro Avila

    Tuesday, June 12, 2012 4:58 PM

Answers

  • Hola

    Segun yo entiendo y lo que yo planteo es, cada vez que  hace click en dtcCaracteristicas_Click almacenamos la ID del valor de item y concatenar

    IDs =IDs & dtcCaracteristicas.BoundText & ","

    Lo que si me faltaba era IDs &,  ejeje

    buena observacion guarracuco


    • Edited by ToniAG Tuesday, June 12, 2012 10:59 PM
    • Proposed as answer by guarracuco Wednesday, June 13, 2012 10:50 PM
    • Marked as answer by Pedro Ávila (MAP) Thursday, June 14, 2012 12:59 PM
    Tuesday, June 12, 2012 10:57 PM

All replies

  • hola

    no entendi muy bien

    ID = dtcCaracteristicas.BoundText

    Aqui capturas el ID y ahora necesitas montar es la sql ¿no?, por que no poner el resto del codigo para entenderlo mejor
    • Edited by ToniAG Tuesday, June 12, 2012 7:52 PM
    Tuesday, June 12, 2012 7:44 PM
  • por ejemplo podria ser a sin:

    Private IDs As String Private Sub dtcCaracteristicas_Click(Area As Integer) Dim i As Integer If Area <> 2 Then Exit Sub IDs = IDs & dtcCaracteristicas.BoundText & "," List1.AddItem dtcCaracteristicas.Text End Sub Private Sub Command1_Click() Dim temp_IDs As String If IDs = "" Then ' no hay ID seleccionados, salimos Exit Sub End If
    temp_IDs = Left(IDs, Len(IDs) - 1) sql = "SELECT * FROM [MiTabla] WHERE id AS (" & temp_IDs & ")"
    ...

    End Sub

    Luego, una vez hecha la consulta limpiamos la variable IDs para poder seleccionar otros IDs

    Edito: Corregido

    • Edited by ToniAG Tuesday, June 12, 2012 10:58 PM
    Tuesday, June 12, 2012 8:06 PM
  • Les falta recorrer los items del combo y concatenar en base a los que están marcados.

    for each item in list1.itemsselected

    concatenar

    next k

    Tuesday, June 12, 2012 10:22 PM
  • Hola

    Segun yo entiendo y lo que yo planteo es, cada vez que  hace click en dtcCaracteristicas_Click almacenamos la ID del valor de item y concatenar

    IDs =IDs & dtcCaracteristicas.BoundText & ","

    Lo que si me faltaba era IDs &,  ejeje

    buena observacion guarracuco


    • Edited by ToniAG Tuesday, June 12, 2012 10:59 PM
    • Proposed as answer by guarracuco Wednesday, June 13, 2012 10:50 PM
    • Marked as answer by Pedro Ávila (MAP) Thursday, June 14, 2012 12:59 PM
    Tuesday, June 12, 2012 10:57 PM
  • Así es Toni cada vez que selecciono un item debo capturar el id de dicho item pero esos item son caracteridticas de animales si las carcateristicas coiciden debería mostrar nombre de animal, leyenda, foto y video yo lo he hecho de una menera pero creo que se puede hacer mas profecional como no pude concatenar los id puse 2 cajas de texto con los id respectivos y si coincidian me hacia la busqueda y si no coincidian mostraba un mensaje los id tienen que ser iguales para que pueda buscar te muestro el código.

    Option Explicit
    Dim strSQL As String, ID As Integer

    Private Sub btnEjecutar_Click()
      Dim i As Integer, dato As String, ruta As String
      Dim rs As New ADODB.Recordset
      
      For i = 1 To List1.ListCount
        dato = dato & ", '" & List1.List(i - 1) & "'"
      Next
      If txtID1.Text = txtID2.Text Then
        strSQL = "SELECT A.nombre, A.leyenda, A.foto FROM Animales AS A"
        strSQL = strSQL & " INNER JOIN Caracteristicas AS C ON A.codigo = C.codigo"
        strSQL = strSQL & " WHERE C.descripcion in (" & Mid(dato, 2) & ")"
        rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
      Else
        MsgBox "Caracteristicas incorrectas verifique", vbInformation, App.Title
        Limpiar
        Exit Sub
      End If
      txtNombre.Text = rs!nombre
      txtLeyenda.Text = rs!leyenda
      ruta = rs!foto
      cargar_Imagen foto2, ruta
      
      With MMControl1
        If txtNombre.Text = "GATO" Then
          .URL = "D:\Animalesvb6\Videos\gato.wmv"
          .Controls.play
        ElseIf txtNombre.Text = "PERRO" Then
          .URL = "D:\Animalesvb6\Videos\perro.wmv"
        ElseIf txtNombre.Text = "CHANCHO" Then
          .URL = "D:\Animalesvb6\Videos\chancho.wmv"
        End If
      End With
      Limpiar
    End Sub

    Private Sub btnEliminar_Click()
      If List1.Text = "" Then
        MsgBox "Debe seleccionar un registro", vbInformation, "Mensaje"
        Exit Sub
      End If
      List1.RemoveItem List1.ListIndex
    End Sub

    Private Sub dtcCaracteristicas_Click(Area As Integer)
      Dim i As Integer
      If Area <> 2 Then Exit Sub
      ID = dtcCaracteristicas.BoundText
      If txtID1.Text = "" Then
        txtID1.Text = ID
      ElseIf txtID2.Text = "" Then
        txtID2.Text = ID
      End If
      List1.AddItem dtcCaracteristicas.Text
    End Sub

    Private Sub Form_Load()
      Dim rsCarac As ADODB.Recordset
            
      Conectar
      strSQL = "SELECT codigo, descripcion FROM Caracteristicas ORDER BY descripcion ASC"
      Set rsCarac = New ADODB.Recordset
      rsCarac.Open strSQL, cn, adOpenStatic, adLockOptimistic
      
      Set dtcCaracteristicas.RowSource = rsCarac
      dtcCaracteristicas.BoundColumn = "codigo"
      dtcCaracteristicas.ListField = "descripcion"
     
    End Sub

    Sub cargar_Imagen(Objeto As Object, Path_Foto As String)
      On Error Resume Next
      Dim Pos_x As Single
      Dim Pos_y As Single
      Dim Anchoimagen As Single
      Dim Altoimagen As Single
      Dim Anchoobjeto As Single
      Dim Altoobjeto As Single

      Dim escalaoriginal As Single
        Set foto2 = LoadPicture(Path_Foto)

        With Objeto
          .AutoRedraw = True
          .Cls
          escalaoriginal = .ScaleMode
          .ScaleMode = vbPixels

          Anchoimagen = .ScaleX(foto2.Width, vbHimetric, vbPixels)
          Altoimagen = .ScaleY(foto2.Height, vbHimetric, vbPixels)

        End With
    End Sub

    Private Sub Form_Unload(Cancel As Integer)
      Unload Me
    End Sub

    Sub Limpiar()
      txtID1.Text = ""
      txtID2.Text = ""
      List1.Clear
    End Sub

    Toni como veras al no poner concateenar los id se me ocurrio capturar los id en cajas de texto para poder validar pero creo que se puede hacer mas profesional y modificar la consulta, para salir del apuro lo hice así.


    Pedro Avila

    Wednesday, June 13, 2012 12:33 PM