| |||
convertir BD de access 97 a access 2000 Hola, me gustaría modificar una base de datos que está en access 97, pero yo estoy usando actualmente el access 2000. Me da la opción de convertir la BD de 97 a 2000 y en principio parecía hacerlo perfectamente. Los formularios y las tablas aparecen igual, pero a la hora de hacer una consulta y obtener un informe tengo un problema: poniendo los mismos parámetros de entrada, la versión 97 me saca 51 registros de salida y la versión 2000 solo 4. Alguien sabría decirme que hago mal? Es problema de access o de Visual Basic? Gracias de antemano y un saludo. |
| |||
Respuesta: convertir BD de access 97 a access 2000 Pues esta es una de ellas. Me imaginaba que podría ser algo de eso, pero ni idea de lo que tendría que cambiar. Muchas gracias por el interés. Private Sub Informe_Click() On Error GoTo Err_Comando51_Click 'MUESTRA LOS DATOS QUE COINCIDEN CON LA CONSULTA EFECTUADA 'Variables Dim DiaMin, MesMin, AñoMin As Integer Dim DiaMax, MesMax, AñoMax As Integer Dim SQL As String 'Comprobaciones 'FechaExpedicionLicenciaMinima - FechaExpedicionLicenciaMaxima If Not IsNull(Me.FechaExpedicionLicenciaMinima) And Not IsNull(Me.FechaExpedicionLicenciaMaxima) Then 'comienzo la sql SQL = "SELECT * FROM tbTitulares WHERE ( " DiaMin = Day(Me.FechaExpedicionLicenciaMinima) MesMin = Month(Me.FechaExpedicionLicenciaMinima) AñoMin = Year(Me.FechaExpedicionLicenciaMinima) DiaMax = Day(Me.FechaExpedicionLicenciaMaxima) MesMax = Month(Me.FechaExpedicionLicenciaMaxima) AñoMax = Year(Me.FechaExpedicionLicenciaMaxima) SQL = SQL & " (tbTitulares.FechaExpedicion BETWEEN #" & MesMin & "/" & DiaMin & "/" & AñoMin & "# AND #" & MesMax & "/" & DiaMax & "/" & AñoMax & "#) " End If 'FechaCaducidadLicenciaMinima - FechaCaducidadLicenciaMaxima If Not IsNull(Me.FechaCaducidadLicenciaMinima) And Not IsNull(Me.FechaCaducidadLicenciaMaxima) Then DiaMin = Day(Me.FechaCaducidadLicenciaMinima) MesMin = Month(Me.FechaCaducidadLicenciaMinima) AñoMin = Year(Me.FechaCaducidadLicenciaMinima) DiaMax = Day(Me.FechaCaducidadLicenciaMaxima) MesMax = Month(Me.FechaCaducidadLicenciaMaxima) AñoMax = Year(Me.FechaCaducidadLicenciaMaxima) 'compruebo si se ha comenzado la sql, si no la comienzo If SQL = "" Then SQL = "SELECT * FROM tbTitulares WHERE ( " Else SQL = SQL + " AND " End If SQL = SQL & " (tbTitulares.FechaCaducidad BETWEEN #" & MesMin & "/" & DiaMin & "/" & AñoMin & "# AND #" & MesMax & "/" & DiaMax & "/" & AñoMax & "#) " End If If SQL = "" Then SQL = "Select * from tbTitulares" Else SQL = SQL & " );" End If 'abro el informe DoCmd.OpenReport "rptConsultasLicencias", acViewDesign Reports("rptConsultasLicencias").RecordSource = SQL DoCmd.Close acReport, "rptConsultasLicencias", acSaveYes DoCmd.OpenReport "rptConsultasLicencias", acViewPreview Exit_Comando51_Click: Exit Sub Err_Comando51_Click: MsgBox Err.Description Resume Exit_Comando51_Click End Sub |
| ||||
Respuesta: convertir BD de access 97 a access 2000 MIra a ver si con estos cambios consigues algo: Cita: un saludo Private Sub Informe_Click() On Error GoTo Err_Comando51_Click 'MUESTRA LOS DATOS QUE COINCIDEN CON LA CONSULTA EFECTUADA 'Variables Dim DiaMin As Integer, MesMin As Integer, AñoMin As Integer Dim DiaMax As Integer, MesMax As Integer, AñoMax As Integer Dim SQL As String 'Comprobaciones 'FechaExpedicionLicenciaMinima - FechaExpedicionLicenciaMaxima If Nz(Me.FechaExpedicionLicenciaMinima, "") <> "" And Nz(Me.FechaExpedicionLicenciaMaxima, "") <> "" Then 'comienzo la sql SQL = "SELECT * FROM tbTitulares WHERE ( " DiaMin = Day(Me.FechaExpedicionLicenciaMinima) MesMin = Month(Me.FechaExpedicionLicenciaMinima) AñoMin = Year(Me.FechaExpedicionLicenciaMinima) DiaMax = Day(Me.FechaExpedicionLicenciaMaxima) MesMax = Month(Me.FechaExpedicionLicenciaMaxima) AñoMax = Year(Me.FechaExpedicionLicenciaMaxima) SQL = SQL & " (tbTitulares.FechaExpedicion BETWEEN #" & DateSerial(AñoMin, MesMin, DiaMin) & "# AND #" & DateSerial(AñoMax, MesMax, DiaMax) & "#) " End If 'FechaCaducidadLicenciaMinima - FechaCaducidadLicenciaMaxima If Nz(Me.FechaCaducidadLicenciaMinima, "") <> "" And Nz(Me.FechaCaducidadLicenciaMaxima, "") <> "" Then DiaMin = Day(Me.FechaCaducidadLicenciaMinima) MesMin = Month(Me.FechaCaducidadLicenciaMinima) AñoMin = Year(Me.FechaCaducidadLicenciaMinima) DiaMax = Day(Me.FechaCaducidadLicenciaMaxima) MesMax = Month(Me.FechaCaducidadLicenciaMaxima) AñoMax = Year(Me.FechaCaducidadLicenciaMaxima) 'compruebo si se ha comenzado la sql, si no la comienzo If SQL = "" Then SQL = "SELECT * FROM tbTitulares WHERE ( " Else SQL = SQL + " AND " End If SQL = SQL & " (tbTitulares.FechaCaducidad BETWEEN #" & DateSerial(AñoMin, MesMin, DiaMin) & "# AND #" & DateSerial(AñoMax, MesMax, DiaMax) & "#) " End If If Nz(SQL, "") = "" Then SQL = "Select * from tbTitulares" Else SQL = SQL & " );" End If 'abro el informe DoCmd.OpenReport "rptConsultasLicencias", acViewDesign Reports("rptConsultasLicencias").RecordSource = SQL DoCmd.Close acReport, "rptConsultasLicencias", acSaveYes DoCmd.OpenReport "rptConsultasLicencias", acViewPreview Exit_Comando51_Click: Exit Sub Err_Comando51_Click: MsgBox Err.Description Resume Exit_Comando51_Click End Sub Última edición por Taribo007; 12/05/2009 a las 06:14 |
| ||||
Respuesta: convertir BD de access 97 a access 2000 Justo antes de abrir el informe, ejecuta un debug.print, que imprimira el contenido de la variable sql en la ventana inmediato. Copiala y crea una consulta ueva con esa sql a ver si los datos son correctos y la sql esta bien construida. If Nz(SQL, "") = "" Then SQL = "Select * from tbTitulares" Else SQL = SQL & " );" End If debug.print sql Un saludo He puesto en rojo lo que he cambiado |
| |||
Respuesta: convertir BD de access 97 a access 2000 Culpa mía. Me acabo de dar cuenta que siempre se pasan los mismo parámetros, pongas lo que pongas. La que que me pasaste está bien, igual que la que convertí yo, hace la consulta correctamente, pero la inicial (versión 97), deja siempre las mismas fechas, es como si estuviera bloqueada. Muchas gracias por tu ayuda. |