• Lunes 18 de Noviembre de 2024, 04:50

Autor Tema:  Como Hacer Una Variable De Tipo Campo??  (Leído 2184 veces)

neorent

  • Miembro MUY activo
  • ***
  • Mensajes: 249
    • Ver Perfil
    • http://www.laestokada.cl
Como Hacer Una Variable De Tipo Campo??
« en: Lunes 17 de Abril de 2006, 17:09 »
0
hola a todos debe ser un poco extraña mi pregunta pero quiero explicarles a ver si me entienden, resulta que quiero saber si se puede declarar una variable que sea de tipo campo ¿que se preguntaran ustedes?, bueno resulta que estoy hacendo una busqueda y tengo un combo box en cual si tu selecionas buscar por nombre esta variable tome el campo "nombre" de la tabla, se puede hacer esto?, no se si pueda hacer trate de hacerlo tipo field y no me resulta, quizas me puedan dar una mano, a ver les dejo el code para que lo vean.


Option Explicit
Public var As Field


Private Sub Command1_Click()
Buscar
End Sub

Private Sub Form_Load()
Dim base As Database
Dim rst_base As Recordset
Dim rst_paterno As Recordset
Dim deptos As Recordset
Dim maestra As Recordset
Dim Archivo As String
Dim Nro As Double
Dim msg As String
Dim ruta As String

Archivo = App.Path & "\rutabasesoporte.TXT"
If Dir(Archivo, vbArchive) = "" Then
MsgBox "No existe archivo de configuracion de RUTA", vbInformation, "Advertencia"
Else
Nro = FreeFile
Open Archivo For Input As #Nro
Input #Nro, ruta
'Close (Linea)
End If
Call limpiar
Set base = OpenDatabase(ruta)
Set rst_base = base.OpenRecordset("select [folio_atencion] from maestro_atenciones order by folio_atencion;", dbOpenDynaset, dbConsistent, dbOptimistic)
    rst_base.MoveNext
    rst_base.MoveFirst
Set rst_paterno = base.OpenRecordset("select * from maestro_atenciones;", dbOpenDynaset, dbConsistent, dbOptimistic)
    If rst_paterno.RecordCount > 0 Then
        rst_paterno.MoveNext
        rst_paterno.MoveFirst
       
    End If
Combo1.AddItem "USUARIO"
Combo1.AddItem "DIRECCION / DEPTO"
Combo1.AddItem "TELEFONO"
Combo1.AddItem "ANEXO"
Combo1.AddItem "PROBLEMA REPORTADO"
Combo1.AddItem "ESTADO ATENCION"
Combo1.AddItem "FOLIO DE ATENCION"
End Sub

Sub INICIARGRILLA()
    With hfgGrillaP
        .ColWidth(0) = 2000: .TextMatrix(0, 0) = "FOLIO DE ATENCION"
        .ColWidth(1) = 2000: .TextMatrix(0, 1) = "NOMBRE DE USUARIO"
        .ColWidth(2) = 2000: .TextMatrix(0, 2) = "DIRECCION / DEPTO"
        .ColWidth(3) = 2000: .TextMatrix(0, 3) = "PROBLEMA REPORTADO"
        .ColWidth(4) = 2000: .TextMatrix(0, 4) = "TECNICO ASIGNADO"
        .ColWidth(5) = 2000: .TextMatrix(0, 5) = "ESTADO ATENCION"
        .ColAlignmentFixed = 3
        .ColAlignment(0) = 0
        .ColAlignment(1) = 0
        .ColAlignment(2) = 0
        .ColAlignment(3) = 0
        .ColAlignment(4) = 0
        .ColAlignment(5) = 0
    End With
End Sub

Sub Buscar()
Dim cont As Long
Dim hhhh As Integer
Dim rst_base As Recordset
Dim base As Database
Dim rst_paterno As Recordset
Dim maestra As Recordset
Dim totalpc As Integer
Dim porcentaje As Integer
Dim total As Integer
Dim Archivo As String
Dim Nro As Double
Dim msg As String
Dim ruta As String

Archivo = App.Path & "\rutabasesoporte.TXT"
If Dir(Archivo, vbArchive) = "" Then
MsgBox "No existe archivo de configuracion de RUTA", vbInformation, "Advertencia"
Else
Nro = FreeFile
Open Archivo For Input As #Nro
Input #Nro, ruta
'Close (Linea)
End If
hfgGrillaP.Clear
INICIARGRILLA

Set base = OpenDatabase(ruta)
If Combo1.Text = "USUARIO" Then
    var = rst_base("usuario_atencion") 'aqui es donde quiero que la variable var obtenga el valor de usuario atencion incluyendo el contenido
End If

Set rst_paterno = base.OpenRecordset("select * from MAESTRO_ATENCIONES  where var like '*" & Trim(Text1) & "*'order by [FOLIO_ATENCION]") 'text1 contine lo que voy a buscar

 With rst_paterno
 If .RecordCount > 0 Then
    .MoveLast
   .MoveFirst
    hhhh = .RecordCount
    hfgGrillaP.Rows = .RecordCount + 1
    For cont = 1 To .RecordCount
       hfgGrillaP.TextMatrix(cont, 0) = "" & ![folio_atencion]
       hfgGrillaP.TextMatrix(cont, 1) = "" & ![USUARIO_ATENCION]
       hfgGrillaP.TextMatrix(cont, 2) = "" & ![DIRECCION_DEPTO]
       hfgGrillaP.TextMatrix(cont, 3) = "" & ![PROBLEMA_DESCRITO]
       hfgGrillaP.TextMatrix(cont, 4) = "" & ![TECNICO_ASIGNADO]
       hfgGrillaP.TextMatrix(cont, 5) = "" & ![ESTADO_ATENCION]
        .MoveNext
    Next
Else
    MsgBox "NO HAY DATOS", vbOKOnly, "ATENCION"
End If
    End With

End Sub

Private Sub hfgGrillaP_DblClick()
Dim pasar As String
pasar = Format(hfgGrillaP.TextMatrix(hfgGrillaP.Row, 0), "")
End Sub

bueno espero que me puedan ayudar muchas gracias adios.
Un Tigre Nunka Kambia Sus Rayas

Juanolo

  • Miembro MUY activo
  • ***
  • Mensajes: 202
    • Ver Perfil
Re: Como Hacer Una Variable De Tipo Campo??
« Respuesta #1 en: Lunes 17 de Abril de 2006, 19:13 »
0
Hola.
  Me parece que no necesitas una variable tan especializada (a menos que haya entendido mal la pregunta). Las instrucciones Sql son  “Cadenas”. Luego, lo que necesitas es una variable de tipo String y ‘concatenar’ la Instrucción Sql de acuerdo a esto.  Por ejemplo, asignaremos “MiCampo” como nombre del campo que queremos consultar.

Código: Text
  1. Dim StCampo As String
  2. Dim StSql As String
  3.  
  4. StCampo = "MiCampo"
  5. StSql = "Select MiBase." & StCampo & " FROM MiBase;"
  6.  

Esto dará como resultado la instrucción Sql.

"Select MiBase.MiCampo FROM MiBase;"
La luz que sólo se ilumina a sí misma, es oscuridad.

neorent

  • Miembro MUY activo
  • ***
  • Mensajes: 249
    • Ver Perfil
    • http://www.laestokada.cl
Re: Como Hacer Una Variable De Tipo Campo??
« Respuesta #2 en: Lunes 17 de Abril de 2006, 19:59 »
0
hola gracias por responder pero no es lo que necesito quizas me explique mal te explico a ver si es que puedo es que es un poco complicado, mira tengo una tabla que se llama "tabla" cierto, bueno ademas tengo un campo que se llama "folio" cierto bueno lo que yo quiero es que segun una seleccion que yo haga puedo asigarle a la variable "var" el valor o tipo del campo "folio" es como decir esto

var=folio
eso es, se puede hacer pk depsues la intruccion sql deberia ser asi mira

Set rst_paterno = base.OpenRecordset("select * from maestro_atenciones  where var like '*" & Trim(Text1) & "*'order by [folio_atencion]")

var vendria tomando el lugar del campo que quiero buscar

osea este

Set rst_paterno = base.OpenRecordset("select * from maestro_atenciones  where [usuario_atencion] like '*" & Trim(Text1) & "*'order by [folio_atencion]")

bueno si es por selecion deberia ser asi?

dim stcampo as string

If Combo1.Text = "USUARIO ATENCION" Then
    stcampo = "usuario_atencion"
End If

Set rst_paterno = base.OpenRecordset("select * from maestro_atenciones  where stcampo like '*" & Trim(Text1) & "*'order by [folio_atencion]")

lo que tu me dices es que le asigne el valor del campo a la variable cierto, pero que pasa si tengo mas de una tabla con el mismo nombre del campo cual campo tomaria mi variable?, bueno no lo tengo muy claro ahora si me puedes explicar un pokito mas a fondo, podre entender(soy ultra novato en este tipo de busqueda) sorry recien llevo 1 mes a media dandole a esto asi que por eso pregunto.
te agradesco la ayuda un saludo adios.
Un Tigre Nunka Kambia Sus Rayas

Juanolo

  • Miembro MUY activo
  • ***
  • Mensajes: 202
    • Ver Perfil
Re: Como Hacer Una Variable De Tipo Campo??
« Respuesta #3 en: Lunes 17 de Abril de 2006, 23:08 »
0
A Ver:  Si lo que tenemos es:

Citar
If Combo1.Text = "USUARIO ATENCION" Then
stcampo = "usuario_atencion"
End If

Set rst_paterno = base.OpenRecordset("select * from maestro_atenciones where stcampo like '*" & Trim(Text1) & "*'order by [folio_atencion]")

La forma correcta de plantearlo es:

Código: Text
  1. Set rst_paterno = base.OpenRecordset("select * from maestro_atenciones where " & stcampo & " like '*" & Trim(Text1) & "*'order by [folio_atencion]")
  2.  

En este caso, si más de una tabla tienen el mismo nombre de campo, no importa. Tu consulta dice:
Citar
Select *
Seleccione todos los campos
Citar
From maestro_atenciones
De la tabla maestro_atenciones
Citar
where " & stcampo & " like '*" & Trim(Text1) & "*'
Donde el Campo Usuario_Atencion contenga la cadena que está en el text1
Citar
order by [folio_atencion]
Ordenado por el folio de atención.

Espero te guíe.
La luz que sólo se ilumina a sí misma, es oscuridad.

neorent

  • Miembro MUY activo
  • ***
  • Mensajes: 249
    • Ver Perfil
    • http://www.laestokada.cl
Re: Como Hacer Una Variable De Tipo Campo??
« Respuesta #4 en: Viernes 21 de Abril de 2006, 00:16 »
0
eso es juanolo le diste al clavo eso era lo que necesitava muchas gracias, no pense que fuera asi pero tenia mas o menos la idea gracias por la guia sirve de mucho y que estes bien adios
Un Tigre Nunka Kambia Sus Rayas