Estoy haciendo un informe con dos tablas en Visual Basic y necesito ayuda para conectarlas...

Hola,
Estoy haciendo un informe con dos tablas que no tienen nada en común, lo que e hecho es hacer un informe con una tabla y agregarle un subinforme con la otra tabla, necesito que un dato de la tabla plantillas que es donde tomo datos para el informe cuando sea igual a un campo de la tabla personal me de unos resultado.
Uno de los problemas que tengo es que no se como preguntar por los campos de las dos tablas.. Lo hago de esta forma y me da un error.
Public Function ComponerDatos(C_SERVICIO As Long, C_MODADSER As Long, C_SUBMO_OPSERV As Long) As String
    Dim strAux As String
    If PLANTILLA_DESARROLLO.C_SERVICIO = PERSONAL_DESARROLLO.C_SERVICIO Then
       strAux = "  " & Trim(C_SERVICIO) & "  " & " / " & "  " & Trim(C_MODADSER) & " / " & "  " & Trim(C_SUBMO_OPSERV) & "  "
     Else
       strAux = " " & " EL CODIGO DE SERVICIO NO TIENE ASOCIADO FORMATOS"
    End If
    ComponerDatos = strAux
End Function
El error que me dice es " objeto no encontrado, no se a que se refiere ya que lo llamo el la label asi: =ComponerDatos([PLANTILLA_DESARROLLO.C_SERVICIO];[PERSONAL_DESARROLLO.C_SERVICIO];[C_MODADSER];[C_SUBMO_OPSERV])
¿Cómo se pregunta por campos iguales pero utilizados en tablas distintas la cual no están relacionadas?
Por otra parte como hago para que un string me muestre los valores de una variable que utilizado, es decir me coloque valores seguidos de los otros valores.
Este es el codigo que e echo
Public Function ComponerTipoFormato(T_FOR_COIDSERV As Long, COIDSERV_NPOS As Long, DES_DA_COIDSER As Variant, N_ORD_COIDSERV As Long) As String
    Dim strAux As String
    Dim cadena1 As String
    Dim cadena2 As String
    Dim cadena3 As String
    Dim cadena4 As String
    Dim cadena5 As String
    Dim cadena6 As String
    Dim cadena7 As String
    Dim cadena8 As String
    Dim cadena9 As String
    Dim cadena10 As String
    Dim totalcadenas As String
    Select Case T_FOR_COIDSERV
    Case 1
      If T_FOR_COIDSERV = M Or T_FOR_COIDSERV = 1 Then
       If N_ORD_COIDSERV = 1 Then
         cadena1 = Format(x, "000") & "  " & RTrim(DES_DA_COIDSER) & "  "
         cadena2 = Format(x, "000") & "  " & LTrim("9") & "(" & LTrim(COIDSERV_NPOS) & ")" & "  " & " + " & "  "
         cadena3 = cadena1 & cadena2
El primer valor me lo guarda bien, pero cuando pregunto por el segundo me coloca lo mismo
       End If
      ' If T_FOR_COIDSERV = M Or T_FOR_COIDSERV = 1 Then
        If N_ORD_COIDSERV = 2 Then
         cadena4 = Format(x, "000") & "  " & RTrim(DES_DA_COIDSER) & "  " & LTrim("9") & "(" & LTrim(COIDSERV_NPOS) & ")" & "  " & " + " & "  "
         cadena5 = cadena3 & cadena4
        End If
End If
    End Select
      ComponerTipoFormato = cadena3 + cadena5
Lo que quiero es que me haga algo así: moda 9(3) + sub 9(3) +... Los campos que tenga. Que tengo que hacer para colocar el string de esta manera.
Agradezco que puedas ayudarme

1 Respuesta

Respuesta
1
Para lo primero, debes hacer un INNER JOIN entre las tablas, los INNER JOIN juntan las tablas siempre y cuando tengan un campo en común, un ejemplo de INNER JOIN es así:
SELECT tabla1.campo1,
tabla1.campo2,
tabla2.campo1,
tabla2.campo2
FROM tabla1
INNER JOIN tabla2 ON tabla1.campo1 = tabla2.campo2
WHERE campo1 = dato
En la primera parte desde el SELECT hasta el FROM, son los campos que quieres mostrar, en el FROM desde la tabla donde quieres lea, INNER JOIN la tabla que quieres juntar y donde los campos de ambas tablas sean iguales y WHERE aquí es la clave, aquí es donde tu debes poner el valor para que haga la comparación y muestre los datos.
Para lo segundo no entiendo mucho lo que quieres hacer si gustas me podrías explicar mejor esa parte...
Hola,
Gracias por la respuesta anterior, con respecto a la segunda pregunta
Lo que quiere es unir varias string en uno, es decir la primera vez que entre por el select me guarde es valor, la segunda vez que vuelva a entrar coloque el primer valor + el segundo valor y así sucesivamente.
Por ejemplo si la primera vez que entro por el select el valor que tienen los campos son manzana con una longitud de 9(3) que colocado en un string seria manzana 9(3) la próxima vez que vuelva a entrar por el select el valor que tienen los campos peras 9(2) que quedaría así pera 9(2) pero quiero unir el primer valor que tenia la primera vez variable más el segundo valor manzana 9(3) + pera 9(2)
Así lo estoy haciendo..
Select Case T_FOR_COIDSERV
    Case 1
      If T_FOR_COIDSERV = M Or T_FOR_COIDSERV = 1 Then
       If N_ORD_COIDSERV = 1 Then
         cadena1 = Format(x, "000") & "  " & RTrim(DES_DA_COIDSER) & "  "
         cadena2 = Format(x, "000") & "  " & LTrim("9") & "(" & LTrim(COIDSERV_NPOS) & ")" & "  " & " + " & "  "
         cadena3 = cadena1 & cadena2
EL PRIMER VALOR ME LO GUARDA BIEN, PERO CUANDO PREGUNTO POR EL SEGUNDO ME COLOCA LO MISMO
       End If
      ' If T_FOR_COIDSERV = M Or T_FOR_COIDSERV = 1 Then
        If N_ORD_COIDSERV = 2 Then
         cadena4 = Format(x, "000") & "  " & RTrim(DES_DA_COIDSER) & "  " & LTrim("9") & "(" & LTrim(COIDSERV_NPOS) & ")" & "  " & " + " & "  "
         cadena5 = cadena3 & cadena4
        End If
End If
    End Select
      ComponerTipoFormato = cadena3 + cadena5
lo que yo haria serian unos if anidados, me explico,
if not text1.text = "" then
cadena1 = text1.text
elseif not text2.text = "" then
cadena2 = cadena1 & text2.text
elseif not text3.text = "" then
cadena3 = cadena2 & text3.text
Y así, la cosa es que cuando el textbox este en vacío no va a entrar nunca a la sentencia, así lo haría yo...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas