Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ayuda base de datos

Estas en el tema de Ayuda base de datos en el foro de Visual Basic clásico en Foros del Web. Tengo una base de datos de una biblioteca hecha en Access, a esta accedo a traves de un software que hice en Visual Basic A ...
  #1 (permalink)  
Antiguo 22/11/2009, 13:36
 
Fecha de Ingreso: noviembre-2009
Mensajes: 3
Antigüedad: 14 años, 5 meses
Puntos: 0
Ayuda base de datos

Tengo una base de datos de una biblioteca hecha en Access, a esta accedo a traves de un software que hice en Visual Basic
A traves de esta puedo ingresar y borrar libros y estudiantes, generar prestamos, y descargar los libros una vez sean devueltos

El funcionamiento basico ya esta, pero necesito corregir algunas cosas

1) Si se ingresa un dato ya existente, quiero generar un MsgBox que diga que este dato ya existe sin generar error por duplicado
2) Si se ingresa un valor nulo, generar un MsgBox diciendo que debe ingresarse informacion sin generar error por falta de valor
3) Generar un reporte de los prestamos (Mostrar lo valores de la tabla prestamos, puede ser en un listbox, en un combobox o en otro formulario)
4) Establecer un maximo días de prestamo (ejemplo: 3 dias), si se pasa de este tiempo el usuario tendra multa (O en su defecto un MsgBox que diga que el tiempo expiro) (OPCIONAL)
5) Al realizar el prestamo se ingresa el codigo del libro y el codigo del estudiante, esto quiere decir que la tabla prestamo tendra estos valores, lo que quiero ahora es que en el reporte no se visualize codigo de libro y codigo de estudiante sino codigo de libro, nombre de libro, codigo de estudiante y nombre de estudiante
  #2 (permalink)  
Antiguo 23/11/2009, 12:15
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Ayuda base de datos

Hola!!
A ver...
1) Cuando vas a guardar los datos, debes de consultar en la BD si el registro ya existe, si no se encuentra, lo guardas. Crea un recordset con este query:
(Select ID from DATOS where ID_DATOS=" & txtIdDatos ) 'Adapta el query
2) Se puede hacer de varias formas... en el mismo boton de guardar, debes verificar que todos los campos esten llenos.
Private Caja As Control
Private Sub Command1_Click()
For Each Caja In Me.Controls
If Caja.Tag = "txt" Then
If Caja.Text = Empty Then
MsgBox "Existen campos vacios!!", vbInformation
Exit sub
End if
End If
Next Caja
End Sub
3) Carga el listbox con un recordset
List1.clear
Do while not rsData.EOF
List1.additem rsData!CAMPO
rsData.movenext
LOOP
4) Hay varias formas de hacer esa validacion... puedes haceer un modulo de libros prestamos y en ese modulo en el load, consulta los libros que tienen mas de 3 dias (debes tener un campo en la BD con la fecha de prestamo). Utiliza la formula:
DIAS_PRESTADOS= DATEVALUE(fecha actual) -DATEVALUE(fecha)
Si el resultado es mayor a 3, entonces le pones una multa.
5) Multiples formas de hacerlo... si usas un listview, primero realizas los querys para obtener los datos que desees y luego se los asignas al listview...
listview1.listitems.clear
Orden=1
do while not rsData.EOF
Set lsv = lsvData.ListItems.Add(, , (Orden))
lsv.SubItems(1) = rsData!CodLibro
lsv.SubItems(2) = rsData!NombreLibro
lsv.SubItems(3) = rsData!CodEstudiente
lsv.SubItems(4) = rsData!NombreEstudiante
Orden=Orden+1
rsData.movenext
loop
  #3 (permalink)  
Antiguo 23/11/2009, 19:18
 
Fecha de Ingreso: noviembre-2009
Mensajes: 3
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda base de datos

Gracias, ya habia resuelto la gran mayoria de otra forma, pero aun me queda la duda con la fecha

Esta instrucción la escribiria al momento de entrega del libro en el boton de Descargar
Hasta el momento tengo el siguiente codigo


Private Sub Command9_Click() 'DESCARGA DE LIBRO

''Descarga de libro (Devolucion)

Dim CMD As String
Dim CMD1 As String
Dim CMD1 As String

Set BD = New ADODB.Connection
BD.Open "Provider=Microsoft.jet.oledb.4.0; data source= Biblioteca.MDB"



VALORES = Text3.Text 'Codigo de libro

CMD = "select R_FECH from PRESTAMO where R_LIB_COD = ("& VALORES &")" 'Selecciona la fecha asignada al prestamo (al libro prestado)

Set BDSS = BD.Execute(CMD) 'Ejecuta la sentencia SQL

Label1 = BDSS(0) 'Fecha de prestamo 'Asigna a Label1 el resultado de la sentencia

Label2 = DATEVALUE(FECHA_ACTUAL) - DATEVALUE(Label1) 'Asigna a Label2 el resultado de restar fecha de prestamo a la fecha actual (Dias prestados)



If Text3.Text = "" Then 'Si el campo codigo de libro esta vacio

MsgBox "Ingrese Código de libro para descargar el libro"


Else 'Si se ha ingresado un codigo de libro

If Label2 = 4 Then 'Si el tiempo supero los 3 dias

Label3 = Label2 - 3 'Aigna a Label3 el número de días de atraso Dias de atraso


MsgBox "Este estudiante tiene" & Label3 & "días de retraso, Multa de $" & Label3 * 2000 'Mensaje de multa


CMD1= "insert into ESTUDIANTE(EST_MULT) VALUES (Label3) 'Guarda la multa del estudiante

Set BD1 = New ADODB.Connection
BD1.Open "Provider=Microsoft.jet.oledb.4.0; data source= Biblioteca.MDB"


CMD2 = "DELETE FROM PRESTAMO WHERE R_LIB_COD = (" & VALORES & ")" 'Descargar el libro (Devolucion exitosa)
Set BDSS = BD2.Execute(CMD)


Else 'Si el tiempo es menor a 3 dias

Label3 = "0" '0 Días de atraso

CMD1 = "DELETE FROM PRESTAMO WHERE R_LIB_COD = (" & VALORES & ")" 'Descargar el libro (Devolucion exitosa)
Set BDSS = BD1.Execute(CMD)


End If

End If

End Sub


Pero al momento de expresar la parte de fecha actual
DATEVALUE(FECHA_ACTUAL)
no se como debo hacerlo


Quisiera saber si ese codigo esta bn expresado y como hago en esta parte de fecha actual
  #4 (permalink)  
Antiguo 24/11/2009, 06:47
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Ayuda base de datos

Hola otra vez!!!
Intenta así:

FECHA_ACTUAL=date

Label2 = DATEVALUE(FECHA_ACTUAL) - DATEVALUE(Label1)
  #5 (permalink)  
Antiguo 24/11/2009, 18:10
 
Fecha de Ingreso: noviembre-2009
Mensajes: 3
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda base de datos

LO HICE DE LA SIGUIENTE FORMA

Private Sub Form_Load()
Label20 = Format(Now, "dd/mm/yyyy")
End Sub

Label2 = DATEVALUE(Label20) - DATEVALUE(Label1)

JEJE DE TODAS FORMAS GRACIAS :D
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:10.