tiempo.com

Nueva base de datos

Desconectado FRENTEFRIO

  • Cb Incus
  • *****
  • 4980
  • Sexo: Masculino
  • Ojiz-Peacastillo (Cantabria)
    • OJAIZMETEO
Nueva base de datos
« en: Viernes 16 Abril 2010 22:51:13 pm »
Saludos.
Pues aqu os la presento, tras el mucho tiempo que me ha llevado disearla y ponerla en funcionamiento, casi todo a base de consultar libros sobre el tema.
Est realizada en Access y permite grabar, visualizar en modo consulta cualquier dato, ya sea de un da en concreto o de un periodo determinado y sacar los listados que se precisen.
An la quedan hacer algunos toques (los detalles son siempre los que llevan ms tiempo), pero eso ser  a medida que se vayan introduciendo los datos y se vean las necesidades.
Os dejo con una captura de pantalla del Men General de la base de datos.

Estacin Meteorolgica de Ojiz-Peacastillo (Cantabria) Pgina web: OJAIZMETEO
DETECTOR DE RAYOS
                                                   Vigilando el tiempo

Desconectado CANTABRUCO

  • Cb Calvus
  • ****
  • 2288
  • Sexo: Masculino
  • Adivaneubal
Re: Nueva base de datos
« Respuesta #1 en: Viernes 16 Abril 2010 23:18:49 pm »
Una curiosidad.
Como se delimita las HORAS DE SOL en el apartado horas de sol y radiacion solar?
Por umbral de intensidad luminica no puede ser.
Gracias.

Ya esta en funcionamiento la pagina?
« ltima modificacin: Viernes 16 Abril 2010 23:22:16 pm por CANTABRUCO »
..DESDE VILLAPRESENTE CANTABRIA A 42m DE ALTITUD..

Desconectado FRENTEFRIO

  • Cb Incus
  • *****
  • 4980
  • Sexo: Masculino
  • Ojiz-Peacastillo (Cantabria)
    • OJAIZMETEO
Re: Nueva base de datos
« Respuesta #2 en: Viernes 16 Abril 2010 23:24:47 pm »
Una curiosidad.
Como se delimita las HORAS DE SOL en el apartado horas de sol y radiacion solar?
Por umbral de intensidad luminica no puede ser.
Gracias.

Son dos cosas distintas, aunque relacionadas entre s.
Las horas de sol se miden con un heligrafo y la radiacin solar con un pirhelimetro. En mi caso el sensor que mide la radiacin solar es el sensor de la Davis, que da las medidas en Watios por metro cuadrado.

En cuanto al heligrafo, aqu puedes ver un reportaje de cmo es y su funcionamiento:

https://www.tiempo.com/ram/1762/el-heligrafo-de-campbell-stokes/

Estacin Meteorolgica de Ojiz-Peacastillo (Cantabria) Pgina web: OJAIZMETEO
DETECTOR DE RAYOS
                                                   Vigilando el tiempo

Desconectado Vaqueret di Rond

  • un Zarathustra insidioso
  • Superclula
  • ******
  • 5077
  • Sexo: Masculino
  • Eppur si calfa....
    • MeteoCastalla
Re: Nueva base de datos
« Respuesta #3 en: Sbado 17 Abril 2010 01:00:32 am »

Est realizada en Access .....


Es que esa es la herramienta ms indicada.

La de horas que le habrs echado.....


Un consejo (si no quieres llorar en un furturo prximo):

Procura tener los datos en una BD aparte y enlazar las tablas a la BD que utilizas como aplicacin. As te evitars que si alguna rutina en VBA te descalabra la aplicacin, que esto no afecte para nada a los datos.

Enhorabuena!!!
   

Desconectado FRENTEFRIO

  • Cb Incus
  • *****
  • 4980
  • Sexo: Masculino
  • Ojiz-Peacastillo (Cantabria)
    • OJAIZMETEO
Re: Nueva base de datos
« Respuesta #4 en: Sbado 17 Abril 2010 13:07:43 pm »

Est realizada en Access .....


Es que esa es la herramienta ms indicada.

La de horas que le habrs echado.....


Un consejo (si no quieres llorar en un furturo prximo):

Procura tener los datos en una BD aparte y enlazar las tablas a la BD que utilizas como aplicacin. As te evitars que si alguna rutina en VBA te descalabra la aplicacin, que esto no afecte para nada a los datos.

Enhorabuena!!!

Hola Vaqueret.
Pues s...horas...unas cuantas, no creas.
Se compone de muchas tablas ya que quera que todo estuviese bien organizado.
Cada da, por medio del administrador de tareas del Windows, hago una copia de sguridad a un disco duro externo, por si acaso hay algn fallo en el ordenata principal y se me va todo a freir monas. No s si es eso a lo que t te refieres... ::)

He capturado dos pantallas ms, para que se pueda ver un poco la estructura. La primera de ellas corresponde al formulario en donde se graban los datos da a da. Es bastante extenso as que slo se ve la mitad en la pantalla.

La otra captura corresponde a la solicitud de consulta de datos de un da cualquiera. Tambin es extenso y por eso solo se ve la mitad de lo que es en realidad. Pero creo que puede servir para hacerse una idea.





Si tenis alguna sugerencia, ser bienvenida.
Estacin Meteorolgica de Ojiz-Peacastillo (Cantabria) Pgina web: OJAIZMETEO
DETECTOR DE RAYOS
                                                   Vigilando el tiempo

Desconectado JoseBP

  • Cb Calvus
  • ****
  • 2093
  • Sexo: Masculino
  • Jardines de Murillo-Sevilla
    • Tiempo en Sevilla
Re: Nueva base de datos
« Respuesta #5 en: Sbado 17 Abril 2010 13:31:52 pm »
Una base de datos mgnfica.
Sugerencia, por si no lo tienes as, divide la base de datos en 2 partes, as en una solamente tendras las tablas y en la otra los formularios y las consultas.
Con esto puedes modificar los formularios y las consultas sin que te "afecte" a los datos de tus tablas, gana en rapidez y solamente tendras que hacer copia diaria de los datos.
Saludos,

Desconectado Anzur

  • Cb Incus
  • *****
  • 2619
  • Sexo: Masculino
Re: Nueva base de datos
« Respuesta #6 en: Sbado 17 Abril 2010 16:34:28 pm »
Impresionante FRENTEFRO menudo trabajo te has pegado, espero que dentro de poco pueda utilizar yo tambin.
Rute      652msnm       70km al sur de Crdoba, suroeste de Jan, oeste de Granada y 60km al norte de Mlaga     10.559hab.


Ao ms hmedo: 1120,8 mm. 2009/10   ~   T. Mx. Absoluta: 42 en agosto 2005   ~   T. Mn. Absoluta: -7,6 en enero 2005

Desconectado Juanjo...

  • Cb Calvus
  • ****
  • 1984
  • Sexo: Masculino
  • Vamossss Atleti...!!!!!!!!!!!!!
Re: Nueva base de datos
« Respuesta #7 en: Sbado 17 Abril 2010 20:49:20 pm »
Impresionante trabajo te felicito ;D
El Puerto De Santa Mara , Cdiz . 32msnm .
El Blog de la meteorologa Gaditana.
http://meteocdiz.blogspot.com/

Desconectado Valfria

  • Forestal en Meteored
  • Superclula
  • ******
  • 7228
  • Sexo: Masculino
  • Caburniga
Re: Nueva base de datos
« Respuesta #8 en: Sbado 17 Abril 2010 20:49:56 pm »
Vaya currada, Jose.....una maravilla de base de datos.
Como siempre obra de un esntusiasta de la meteo.
Genial.
P.D.
An ando muy liado, me queda mucho trabajo de oficina pediente, nos se si me van ha  dejar acabarlo.
Ya te contar.
TERN DE CABURNIGA (CANTABRIA)
Estacin Meteorolgica, n 1136-E,          254 m./s.n.m.
43 13' 13 16" N            X     394300.51
04 18' 05 97" W           Y   4786190.37

Desconectado los vados

  • PEDRO POLANCO-UCIEDA CANTABRIA
  • Cb Calvus
  • ****
  • 1321
  • Sexo: Masculino
  • CANTABRIA INFINITA
Re: Nueva base de datos
« Respuesta #9 en: Sbado 17 Abril 2010 22:48:23 pm »
ENHORABUENA !!!!!! si seor, un trabajo bien currao, yo como creo que lo tendras previsto, de todas formas te lo recuerdo que tengas algun disco externo que te quede grabado como una copia de seguridad, y tambien pondria un sai por si acaso,  felicitaciones, saludos
" el tiempo nos pone a cada uno en su lugar ".
N 432249" W 0040140" POLANCO, CANTABRIA. 55m/s.n.m. (entre semana )
N 431556" W 0041454" UCIEDA, CANTABRIA. 178m/s.n.m ( finde y festivos)

Desconectado FRENTEFRIO

  • Cb Incus
  • *****
  • 4980
  • Sexo: Masculino
  • Ojiz-Peacastillo (Cantabria)
    • OJAIZMETEO
Re: Nueva base de datos
« Respuesta #10 en: Sbado 17 Abril 2010 23:12:40 pm »
Saludos.

Gracias a todos por contestar. Y agradezco tambin todas las sugerencias.

No s si eso de dividir la BD en dos partes se puede hacer una vez que ya est configurada, o tendra que haberlo previsto antes. Lo cierto es que ni pens en ello.

Cada tabla es independiente de las dems; es decir, no hay elementos comunes en ninguna de ellas para establecer relaciones "uno a uno" "uno a varios". A no ser que puedan relacionarse a travs de la ID.

Como dije anteriormente la tabla funciona bien e incluso ella sola ya realiza algunos clculos que ya estn programados (lo que me evita tener que grabar los datos a mano).

Para tener un respaldo de la BD (como ya dije tambin), todos los dias hago una copia de seguridad a un disco duro externo. Por si acaso...... ::)



Estacin Meteorolgica de Ojiz-Peacastillo (Cantabria) Pgina web: OJAIZMETEO
DETECTOR DE RAYOS
                                                   Vigilando el tiempo

Desconectado Vaqueret di Rond

  • un Zarathustra insidioso
  • Superclula
  • ******
  • 5077
  • Sexo: Masculino
  • Eppur si calfa....
    • MeteoCastalla
Re: Nueva base de datos
« Respuesta #11 en: Domingo 18 Abril 2010 02:48:46 am »
Saludos.

Gracias a todos por contestar. Y agradezco tambin todas las sugerencias.

No s si eso de dividir la BD en dos partes se puede hacer una vez que ya est configurada, o tendra que haberlo previsto antes. Lo cierto es que ni pens en ello.

Cada tabla es independiente de las dems; es decir, no hay elementos comunes en ninguna de ellas para establecer relaciones "uno a uno" "uno a varios". A no ser que puedan relacionarse a travs de la ID.

Como dije anteriormente la tabla funciona bien e incluso ella sola ya realiza algunos clculos que ya estn programados (lo que me evita tener que grabar los datos a mano).

Para tener un respaldo de la BD (como ya dije tambin), todos los dias hago una copia de seguridad a un disco duro externo. Por si acaso...... ::)





Veo que JoseBP te ha sugerido exactamente lo mismo que yo.

Smplemente creas otra base de datos vaca, importas todas las tablas de la que tienes (Archivo -> Obtener datos externos -> Importar, Pulsa el botn de opciones para asegurarte de que importas tambin los datos y las relaciones entre tablas)
En la base de datos donde tienes los formularios, borras todas las tablas (previa copia de seguridad, of course) y, seguidamente, vuelves a 'Obtener Datos externos' -> 'Vincular tablas', seleccionas la nueva base de datos donde previamente habas importado las tablas, seleccionas todas las tablas y ya est!!

Esto te da unas cuantas ventajas:
1. Sabido es por todos los que hemos tenido que trabajar con bases de Access la facilidad que tienen de 'escoarse' por culpa del cdigo VBA. Si te sucede sto, solo perders la aplicacin, no los datos. No lo solucionas haciendo copias de seguridad porque nunca sabes si cuando has hecho la copia la bbase estaba ya 'escoada'.
2. Facilidad para trabajar en red.
3. Facilidad futura para migrar a nuevas versiones del access sin tener que tocar para nada la base de datos.
4. Puedes utilizar el mismo programa con varias bases de datos al mismo tiempo (por ejemplo con varias estaciones, en el supuesto de que las tablas esten diseadas para una nica estacin)


El nico problema que te puedes encontrar es que si mueves de lugar la base de datos, la aplicacin ya no los encontrar.
Para evitar eso puedes hacer una macro 'autoexec' que llame a una funcin que reconecte si se ha perdido el enlace:

Te dejo el cdigo que suelo utilizar para cambiar/buscar la base de datos:


Option Compare Database
Option Explicit

'*******Verssi MultiUsuari
Global EmpDBs As String
Global DocDBs As String
'Global WKs As Workspace

'*Generals
Global NomDB As String
Global DirDB As String
Global DirDoc As String
Global DirImg As String
Global NomUsuari As String
Global CliServ As Boolean

'*******Registre
Global NumSerie As String
Global NomRegistre As String
Global NumRegistre As String
Global NoEval As Boolean
Global Ejercicio As Integer

Public Function Inicio()



End Function



'****** Empresa

Public Sub BuscaNomEmpresa()
Dim db As Database
Dim T As TableDef
Dim CC As String
Dim DD As String
Dim NN As String
Dim Estat As Integer

Dim reconecta As Boolean
On Error GoTo Error_Obri
CliServ = False
Set db = CurrentDb
On Error Resume Next
NomDB = ""
DirDB = ""
Set T = db.TableDefs("_Const")
If Err = 0 Then
   CC = T.Connect
   If Len(CC) > 0 Then
      DD = Mid$(CC, 11)
      If ExistFile(DD) Then
          Estat = 0
          NomDB = FileName(DD)
          DirDB = PathName(DD)
      Else
          BuscaUltimaEmpresa
          DD = DirDB + NomDB
          If ExistFile(DD) Then Estat = 1 Else Estat = 2
      End If
   Else
      Estat = -1 'Local
      NomDB = FileName(CurrentDb.name)
      DirDB = PathName(CurrentDb.name)
      CommandBars("Men principal").Controls("&Cambio Empresa").Visible = False
   End If
Else
   Estat = 2
   Err.Clear
End If
On Error GoTo Error_Obri
CliServ = (Estat >= 0)
If Estat = 2 Then 'Preguntar
   DD = PreguntaNomEmpresa(True)
   NomDB = FileName(DD)
   DirDB = PathName(DD)
End If
If Estat > 0 Then
   While Not ConectaEmpresa(DD)
      MsgBox "El fichero " & DD & vbCr & "No es una base de datos vlida", vbCritical, "ERROR!"
      DD = PreguntaNomEmpresa(True)
      NomDB = FileName(DD)
      DirDB = PathName(DD)
   Wend
End If
DirImg = DirDB & "Imgenes\"
DirDoc = DirDB & "Documentos\"
CambiaPropHyper

If DatosEmpresa Then GravaUltimaEmpresa Else DoCmd.Quit
DoEvents
Exit_Obri:
Set T = Nothing
Set db = Nothing
Exit Sub
Error_Obri:
   MsgBox "Error al abrir Empresa: " & DD & vbCr & Err.Description, vbCritical, "ERROR!"
   Resume Exit_Obri
End Sub
Private Sub CambiaPropHyper()
Dim db As Database
Dim P As Property
On Error Resume Next
Set db = CurrentDb
Set P = db.Containers("Databases").Documents("Summaryinfo").Properties("Hyperlink Base")
If Len(DirDoc) = 0 Then DirDoc = PathEmpresa + "\Documentos\"
P.Value = DirDoc
Set P = Nothing
Set db = Nothing
End Sub

Public Function CambiaEmpresa()
PreguntaNomEmpresa
End Function

Public Function PreguntaNomEmpresa(Optional Forsada As Boolean) As String
Dim CC As String
On Error GoTo Err_Entrada

While Len(CC) = 0
   CC = OpenAccessDB
   If Len(CC) = 0 Then
      If Forsada Then
         If MsgBox("Desea salir del programa sin abrir ninguna empresa?", vbCritical + vbYesNo, "Atencin!") = vbYes Then DoCmd.Quit
      Else
         PreguntaNomEmpresa = DirDB + NomDB
         Exit Function
      End If
   Else
      If Not ExistFile(CC) Then CC = ""
   End If
Wend
If Not Forsada Then
   If ConectaEmpresa(CC) Then
      DatosEmpresa
      NomDB = FileName(CC)
      DirDB = PathName(CC)
      GravaUltimaEmpresa
   End If
End If
PreguntaNomEmpresa = CC
Err_Entrada:
If Err > 0 Then
  MsgBox "Error de Programa: " & CC & vbCr & Err.Description, vbCritical, "ERROR!"
  Err.Clear
End If
End Function


Public Function ConectaEmpresa(PathDB As String) As Boolean
Dim db As Database
Dim DBN As Database
Dim T As TableDef
Dim TNou As TableDef
Dim P As Integer
Dim Pathd As String
On Error GoTo Err_Conn
Set db = CurrentDb
Set DBN = OpenDatabase(PathDB, , True)
P = DBN.TableDefs.Count
SysCmd acSysCmdInitMeter, "Abriendo Empresa " & PathDB & "...", P
P = 1
On Error Resume Next
  Set T = DBN.TableDefs("_Const")
  If Err > 0 Then
     Err.Clear
     Exit Function
  End If
On Error GoTo Err_Conn

For Each T In DBN.TableDefs
    SysCmd acSysCmdUpdateMeter, P
    DoEvents
    If Left$(T.name, 4) <> "MSys" Then
       On Error Resume Next
       Set TNou = db.TableDefs(T.name)
       If Err = 0 Then
          If TNou.Connect <> ";DATABASE=" & PathDB Then
             TNou.Connect = ";DATABASE=" & PathDB
             TNou.RefreshLink
          End If
       Else
          Err.Clear
          DoCmd.TransferDatabase acLink, "Microsoft Access", PathDB, acTable, T.name, T.name
       End If
       On Error GoTo Err_Conn
    End If
    P = P + 1
Next T
DBN.Close
ConectaEmpresa = True
Exit_Conn:
  SysCmd acSysCmdClearStatus
  Set DBN = Nothing
  Set db = Nothing
  Set T = Nothing
  Set TNou = Nothing
  Exit Function
Err_Conn:
   MsgBox "Error al abrir el archivo: " & PathDB & vbCr & Err.Description, vbCritical, "ERROR!"
   Resume Exit_Conn
End Function

Public Sub MostraUsuari()
NomUsuari = CurrentUser
CommandBars("Men Rpido").Controls(4).Caption = NomUsuari
End Sub

Public Function SumaChar(S As String) As String
Dim i As Integer
Dim n As Integer
For i = 1 To Len(S): n = n + Asc(Mid$(S, i, 1)): Next i
SumaChar = Chr$((n Mod 26) + 65)
End Function
Public Function CodChar(S As String, Num As Integer) As Integer
Dim i As Integer
Dim n As Integer
For i = 1 To Len(S): n = n + Asc(Mid$(S, i, 1)): Next i
CodChar = (n Mod Num)
End Function
Public Function SumaCharNum(S As String) As String
Dim i As Integer
Dim n As Integer
For i = 1 To Len(S): n = n + Asc(Mid$(S, i, 1)): Next i
SumaCharNum = Chr$((n Mod 10) + 48)
End Function
Public Function ComprovaSerie(Serie As String, NomReg As String) As String
Dim i As Integer
ComprovaSerie = ""
If Len(Serie) <> 12 Then Exit Function
If Left$(Serie, 4) <> (Left$(CNomCompanyia, 3) & "C") Then Exit Function
i = Len(NomReg)
If Mid$(Serie, 5, 4) <> SumaChar(Left$(NomReg, i - 3)) & SumaChar(Left$(NomReg, i - 2)) & SumaChar(Left$(NomReg, i - 1)) & SumaChar(Left$(NomReg, i)) Then Exit Function
If Mid$(Serie, 9, 4) <> SumaCharNum(Left$(Serie, 8)) & SumaCharNum(Left$(Serie, 9)) & SumaCharNum(Left$(Serie, 10)) & SumaCharNum(Left$(Serie, 11)) Then Exit Function
ComprovaSerie = Serie
End Function

Public Sub BuscaRegistre()
Dim RegTot As Long
Dim XX As Long

RegTot = RegOpenGeneral
XX = RegQueryValue(RegTot, "Num Registro", NumRegistre)
XX = RegQueryValue(RegTot, "Nombre Registrado", NomRegistre)
RegCloseKey RegTot
NumSerie = ComprovaSerie(NumRegistre, NomRegistre)
NoEval = NumSerie <> ""
If Not NoEval Then DoCmd.OpenForm "_Registre_", , , , , acDialog
End Sub
Public Sub BuscaUltimaEmpresa()
Dim RegTot As Long
Dim XX As Long
RegTot = RegOpenLocal
XX = RegQueryValue(RegTot, "Directorio Datos", DirDB)
XX = RegQueryValue(RegTot, "Nombre Datos", NomDB)
RegCloseKey RegTot
End Sub
Public Sub GravaUltimaEmpresa()
Dim RegTot As Long
Dim XX As Long
RegTot = RegOpenLocal
XX = RegSetValue(RegTot, "Directorio Datos", REG_SZ, DirDB)
XX = RegSetValue(RegTot, "Nombre Datos", REG_SZ, NomDB)
RegCloseKey RegTot
End Sub
Public Function Compactar()
Dim Data As String
On Error Resume Next
Data = Format(Now, "yyyy-mm-dd")
RepairDatabase DirDB & NomDB
If Err > 0 Then
   MsgBox Err.Description
   Err.Clear
Else
   CompactDatabase DirDB & NomDB, DirDB & Data & NomDB
   If Err > 0 Then
      MsgBox Err.Description
      Err.Clear
   Else
      FileCopy DirDB & Data & NomDB, DirDB & NomDB
   End If
End If
End Function

Public Function PathEmpresa() As String
On Error GoTo Err_Conn
If Len(DirDB) = 0 Then
    DirDB = PathName(EmpresaDB)
End If
PathEmpresa = DirDB
Exit_Conn:
  Exit Function
Err_Conn:
   Resume Exit_Conn
End Function
Public Function PathDoc() As String
PathDoc = PathEmpresa + "\documentos\"
End Function
Public Function EmpresaDB() As String
Dim CC As String
Dim i As Integer
On Error GoTo Err_Conn
If Len(DirDB) > 0 Then
    EmpresaDB = DirDB + "\" + NomDB
Else
    CC = CurrentDb.TableDefs("_Const").Connect
    i = InStr(CC, "=")
    If i > 0 Then EmpresaDB = Mid$(CC, i + 1)
End If
Exit_Conn:
  Exit Function
Err_Conn:
   Resume Exit_Conn
End Function



Obviamente este cdigo era de un programa mo de gestin para empresas, pero te sirve igual.