Fecha consulta bd en access por medio de visual basic

Estimado experto soy muy novato ojala me pudiera ayudar, mire lo que pasa es lo siguiente (perdonde que sea extenso, pero prefiero que tenga una idea clara de lo que tengo):
1.-Tengo una única tabla en access 2003 llamada trabajadores es sencilla, una clave de tipo numérico, varios campos como nombre, teléfono, etc entre esos hay 2 que me interesan que son: ingreso (fecha corta) y vence_exam_altura(fecha corta) como vera ambos son 2 fechas.
2.-Guiándome con un videotuto estoy creando una aplicación en vb6.0 que consta de 3 form(1principal, 1consulta, reporte) 1 datareport bien, ahora pude "conectarlos" con access (por medio de un DSN y algo como un ) y logre las típicas funciones de adicionar registros eliminar, editar pero para las consultas surge el problema ya que para las consultas que funcionan las hice mediante textbox así por ejemplo los trabajadores con apellido "perez" y me los filtraba y mostraba en un datagrid creo que es el nombre así con otros campos de texto y numéricos.
3.- El problema surge cuando quiero hacer una consulta por la fecha yo use para ingresar los datos DTPicker y se me ocurre usarlo para consultar también así se podría seleccionar una fecha en particular con el DTPicker y ver por ej todos los trabajadores que ingresaron el día 01/01/2010
4.- El tema es que no se programarlo ya esta el DTpicker en el form consulta pero no se como hacer que filtre, ni siquiera estoy seguro de que se programa en el mismo DTPicker es decir haciendo dobleclick en el
5.-No se si le facilitaría las cosas si le escribiera el código que tengo en ese formulario
Por si acaso la base de datos se llama control y la tabla se llama trabajadores a ve que más olvido... Ah ya declare en el form lo necesario para las otras consultas que si funcionan si necesita el código solo avíseme y lo pongo aquí
atentamente,
desesperado novato

3 respuestas

Respuesta
1
en el evento Fecha_Updated(Code As Integer) o el evento change que aunque no exista , si funciona en vb
coloca el SQL que filtrara el form
ejemplo
form.recordsource="select * from Tabla where FechaDeIngreso=" & fecha
dependiendo de tu instalacion de windows puede ser que necesites esto
form.recordsource="select * from Tabla where FechaDeIngreso=#" & fecha & "#"
o con la instrucción Format
form.recordsource="select * from Tabla where format(FechaDeIngreso,"dd/mm/yyyy")=" & format(fecha,"dd/mm/yyyy")
Muchas gracias por la pronta respuesta en a este momento no tengo acceso a mi aplicación esta n otro equipo parece no ser muy difícil según ud lo expone. Quería precisar unas cosas
a que se refiere con: el evento Fecha_Updated(Code As Integer) ; ¿Esto lo busco en el código del formulario donde hago las consultas? ¿Y eso de dependiendo de mi instalación de windows yo tengo un xp sp3 pro en español tendría que añadir lo que ud me sugiere?
Más tarde tendré el equipo a disposición donde tengo la aplicación pero confío en que no habrá problema ud lo hace ver muy sencillo, perdone soy yo el que ignorante en estas cosas
muchas gracias
Este evento lo tiene el control fecha DTpicker y se acciona al cambiar la fecha del control
pide generar código en los tres punticos del evento
y así podrás escribir en vb el código que te puse
lo de la versión es importante porque la instalación de access cambia según el país y la forma de escribir vb también, por ejemplo el separador de listas debe estar en punto y coma y no en coma ya que access se enrreda con los números decimales y el separador de lista iguales, también las fechas de distintos formatos según el país dan problemas
o
En este momento le envío la base y el proyecto de vb6 espero pueda encontrar mi error
Mire logre avanzar lo hice de la siguiente manera en form consulta puse 2 DTPicker y un comando par consultar a través de él. Así:
Private Sub Command1_Click()
temp.Close
Set DataGrid1.DataSource = Nothing
consulta = "select * from trabajadores where ingreso between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "#"
temp.Open consulta, base, adOpenStatic, adLockReadOnly
Set DataGrid1.DataSource = temp
End Sub
El único problema es que al seleccionar la las fechas con el DTPicker considera los días como meses y los meses como día, a partir del código aquí presentado como podría corregir este detalle estaría muy agradecido
usa format(Ingreso,'dd/mm/yyyy') between format(" & DTPicker1.Value & ",'dd/mm/yyyy') and format(" & DTPicker2.Value & ",'dd/mm/yyyy')"
Muchas gracias de verdad excelente respuesta funciona a la perfección, disculpe pero tengo otra duda no se si hacerlo aquí mismo o en otra pregunta
Cierro esta pregunta porque la respuesta fue perfecta, y abro otra que es más simple creo yo, ¿o por este mismo medio la expongo?
Ok, puedes hacer otra pregunta aparte, o si quieres por email
Respuesta
1
Cuando haces consultas con access de fechas estas deben estar encerradas enter "#", sria algo como esto:
"SELECT * FROM Trabajadores WHERE fecha <= #" & dtpicket1.value & "#"
Muchas gracias por su pronta respuesta a continuación expongo el código que poseo:
¿Lo qué ud me recomienda debe ir en código del DTPicker? Debería ser así:
consulta="SELECT * FROM Trabajadores WHERE fecha <= #" & dtpicker1.value & "#"
Dim base As Connection
Dim WithEvents temp As Recordset
Dim consulta As String, cod As Integer
Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
End Sub
Private Sub Form_Load()
Set base = New Connection
Set temp = New Recordset
base.Open "dsn=data"
temp.Open "trabajadores", base, adOpenDynamic, adLockBatchOptimistic
End Sub
Private Sub Text1_Change()
temp.Close
Set DataGrid1.DataSource = Nothing
consulta = "select * from trabajadores where nombre like '%" & Text1 & "%' "
temp.Open consulta, base, adOpenStatic, adLockReadOnly
Set DataGrid1.DataSource = temp
End Sub
Si es un rango de fecha si, faltaría la contraparte en el where con un and, todo depende de la lógica que le vas a aplicar a tu consulta.
Ya lo he hecho así pero creo que falta algo, porque no funciona algo estoy haciendo mal
Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
consulta = "SELECT * FROM Trabajadores WHERE ingreso = #" & DTPicker1.Value & "#"
End Sub
y como agrego el and, debo tener otro DTPicker? para consulta por el rango
¿Cuál es la consulta que quieres hacer con la fecha?
Mire este es el código de del form consulta que tengo lo que quiero es consultar a la tabala de access todos los trabajadores que ingresaron en determinada fecha seleccionada por el DTPicker, como vera el código del DTPicker esta en blanco.
Private Sub Form_Load()
Set base = New Connection
Set temp = New Recordset
base.Open "dsn=data"
temp.Open "trabajadores", base, adOpenDynamic, adLockBatchOptimistic
End Sub
Private Sub Text1_Change()
temp.Close
Set DataGrid1.DataSource = Nothing
consulta = "select * from trabajadores where nombre like '%" & Text1 & "%' "
temp.Open consulta, base, adOpenStatic, adLockReadOnly
Set DataGrid1.DataSource = temp
End Sub
Private Sub Text2_Change()
temp.Close
Set DataGrid1.DataSource = Nothing
consulta = "select * from trabajadores where faena like '%" & Text2 & "%' "
temp.Open consulta, base, adOpenStatic, adLockReadOnly
Set DataGrid1.DataSource = temp
End Sub
Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
End Sub
Mire ahora puse 2 DTPicker y comando para programarlo y hacer la consulta en el, este es el y muestra resultados al menos pero no los que debiera creo que ese un problema de reconocimiento de fecha erróneo:
Private Sub Command1_Click()
temp.Close
Set DataGrid1.DataSource = Nothing
consulta = "select * from trabajadores where ingreso between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "#"
temp.Open consulta, base, adOpenStatic, adLockReadOnly
Set DataGrid1.DataSource = temp
End Sub
La idea es seleccionar un intervalo de fechas entre DTPicker1 y DTPicker2 y muestre los registros que cumplan la condición. Para en el datagrid aparecen la totalidad de los datos
Aclaro un poco más lo anteriormente escrito, al seleccionar las fechas con los datapicker me reconoce el día seleccionado como mes y el mes como día por ejemplo si selecciono el intervalo 01/12/2009 10/12/2009 lo toma como el 12 de enero y 12 de octubre del 2009 como a partir del código que tengo puedo remediar esta situación
Private Sub Command1_Click()
temp.Close
Set DataGrid1.DataSource = Nothing
consulta = "select * from trabajadores where ingreso between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "#"
temp.Open consulta, base, adOpenStatic, adLockReadOnly
Set DataGrid1.DataSource = temp
End Sub
Revisa la configuración regional del PC en donde estas ejecutando la aplicación y coloca la correcta, o sea la que tu necesitas.
Ya lo arregle muchas gracias con ayuda de la instrucción format
Sabe como hacer que junto con los datos de un trabajador extraídos de tabla en access y que son de texto o numéricos aparezca una foto de ellos obviamente que debo tenerla en la tabla de access me refiero a con que elemento en el form la muestro o que código
No te aconsejo que guardes dentro de la base de datos la foto, coloca un campo en donde tengas el nombre del archivo de la foto para el funcionario, y en tu aplicación vas a una carpeta que tu designes en donde guardar las fotos y la cargas en un pictureBox.
Respuesta
1
No se si te he entendido bien, ¿quieres sacar un informe o un formulario filtrandolo por medio de un textbox?
Si es esto seria así
Nombre del textbox " fecha_busqueda"
al hacer click en el boton buscar pondria esto
dim stdocname as string
dim stlinkcriteria as string
stdocname = " formulario1"
stlinkcriteria = "[ingreso] = '" & fecha_busqueda.value & "'"
Cmd. Openform stdocname,,, stlinkcriteria
Esto te abre el formulario1 con todos los registros filtrados por la fecha que hayas puesto en le textbox
espero que te sirva

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas