Programación General > Visual Basic 6.0 e inferiores
Como Hacer Una Variable De Tipo Campo??
(1/1)
neorent:
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.
Juanolo:
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 ---Dim StCampo As StringDim StSql As String StCampo = "MiCampo"StSql = "Select MiBase." & StCampo & " FROM MiBase;"
Esto dará como resultado la instrucción Sql.
"Select MiBase.MiCampo FROM MiBase;"
neorent:
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.
Juanolo:
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]")
--- Fin de la cita ---
La forma correcta de plantearlo es:
--- Código: Text ---Set rst_paterno = base.OpenRecordset("select * from maestro_atenciones where " & stcampo & " like '*" & Trim(Text1) & "*'order by [folio_atencion]")
En este caso, si más de una tabla tienen el mismo nombre de campo, no importa. Tu consulta dice:
--- Citar ---Select *
--- Fin de la cita ---
Seleccione todos los campos
--- Citar ---From maestro_atenciones
--- Fin de la cita ---
De la tabla maestro_atenciones
--- Citar ---where " & stcampo & " like '*" & Trim(Text1) & "*'
--- Fin de la cita ---
Donde el Campo Usuario_Atencion contenga la cadena que está en el text1
--- Citar ---order by [folio_atencion]
--- Fin de la cita ---
Ordenado por el folio de atención.
Espero te guíe.
neorent:
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
Navegación
Ir a la versión completa