Este proyecto tiene como fin hacer un Gráfico Estadístico Covid19 en Visual Basic 6 con Api Res.
Los datos son obtenido de una APi que esta en linea. https://covid19.mathdro.id/api/
EL primer paso es agregar un componente y 3 referencias que son las siguientes:
Componente:
Microsoft Office XP Web Components
Referencias:
Microsoft WinHTTP Services, Version 5.1
Microsoft Scripting Runtime
Microsoft Internet Controls
Luego de esto agregamos al proyecto Un Modulo de clase y 2 Modulos que se encargar de tratar los datos tipo JSON les dejo el enlace de descarga:
Modulos JSON (271 descargas )Después de tener los modulos importados el siguiente paso es traer el listado de países se van a importar desde la API
Sub ObenerPaises() Dim p As Object Dim Texto As String Dim sInputJson As String Dim cab As Integer Set httpURL = New WinHttp.WinHttpRequest 'lista de paises cadena = "https://covid19.mathdro.id/api/countries" httpURL.Open "GET", cadena httpURL.Send Texto = httpURL.ResponseText If Texto = "[]" Then MsgBox ("No se obtuvo resultados") Exit Sub End If sInputJson = "{items:" & Texto & "}" Set p = JSON.parse(Texto) NumPaises = p.Item("countries").Count ReDim Lista_ISO_Paises(NumPaises) cmbPaises.AddItem "Datos Globales" index = 1 For Num = 1 To NumPaises nombre_pais = p.Item("countries").Item(Num).Item("name") ISO3 = p.Item("countries").Item(Num).Item("iso3") cmbPaises.AddItem nombre_pais Lista_ISO_Paises(index) = ISO3 index = index + 1 Next Num cmbPaises.ListIndex = 0 End Sub
Luego al combobox de Paises en el evento click va el siguiente codigo:
Private Sub cmbPaises_Click() Dim ISO3 As String index = cmbPaises.ListIndex If index > 0 Then ISO3 = Lista_ISO_Paises(index) Else ISO3 = "" End If Call DatosGlobales(ISO3) End Sub
En el codigo anterior vemos una variable tipo array llamada Lista_ISO_Paises que va declarada a nivel de formulario:
Dim Lista_ISO_Paises() As String
Y el procedimiento DatosGlobales que tiene 2 funciones: si no se le pasan parametros trae los datos globales de CODIV-19 pero si pasamos el ISO3 de un país solo mostrara la información de ese país.
Sub DatosGlobales(Optional ISO3 As String = "") Dim p As Object Dim Texto As String Dim sInputJson As String Dim cab As Integer Set httpURL = New WinHttp.WinHttpRequest If ISO3 = "" Then cadena = "https://covid19.mathdro.id/api" Else cadena = "https://covid19.mathdro.id/api/countries/" & ISO3 End If httpURL.Open "GET", cadena httpURL.Send Texto = httpURL.ResponseText If Texto = "[]" Then MsgBox ("No se obtuvo resultados") Exit Sub End If sInputJson = "{items:" & Texto & "}" Set p = JSON.parse(Texto) ffecha = Mid(p.Item("lastUpdate"), 1, 10) ffecha = Replace(ffecha, "-", "/") Fecha = Format(CDate(ffecha), "dd/mm/yyyy") lblFecha1.Caption = Fecha lblFecha2.Caption = Fecha lblFecha3.Caption = Fecha confirmados = p.Item("confirmed").Item("value") lblConfirmados.Caption = FormatNumber(confirmados) Recuperados = p.Item("recovered").Item("value") lblRecuperados.Caption = FormatNumber(Recuperados) Fallecidos = p.Item("deaths").Item("value") lblFallecidos.Caption = FormatNumber(Fallecidos) If ISO3 = "" Then Call GraficoGlobal Else Call GraficoPais(confirmados, Fallecidos, Recuperados) End If End Sub
Por ultimo nos queda el gráfico uso 2 procedimiento uno para el gráfico global y el otro para el gráfico por pais.
Sub GraficoPais(Infectados, Fallecidos, Recuperados) Dim Columnas(3) Dim Valores(3) Columnas(1) = "Infectados" Columnas(2) = "Fallecidos" Columnas(3) = "Recuperados" Valores(1) = Infectados Valores(2) = Fallecidos Valores(3) = Recuperados numitem = ChartSpace1.Charts(0).SeriesCollection.Count - 1 If numitem > 0 Then For i = 0 To numitem ChartSpace1.Charts(0).SeriesCollection.Delete (0) Next i End If Set chConstants = ChartSpace1.Constants ChartSpace1.Charts(0).SeriesCollection.Add ChartSpace1.Charts(0).SeriesCollection(0).Caption = "Infectados" ChartSpace1.Charts(0).SeriesCollection(0).SetData chConstants.chDimCategories, chConstants.chDataLiteral, Columnas(1) ChartSpace1.Charts(0).SeriesCollection(0).SetData chConstants.chDimValues, chConstants.chDataLiteral, Valores(1) ChartSpace1.Charts(0).SeriesCollection.Add ChartSpace1.Charts(0).SeriesCollection(1).Caption = "Fallecidos" ChartSpace1.Charts(0).SeriesCollection(1).SetData chConstants.chDimCategories, chConstants.chDataLiteral, Columnas(2) ChartSpace1.Charts(0).SeriesCollection(1).SetData chConstants.chDimValues, chConstants.chDataLiteral, Valores(2) ChartSpace1.Charts(0).SeriesCollection.Add ChartSpace1.Charts(0).SeriesCollection(2).Caption = "Recuperados" ChartSpace1.Charts(0).SeriesCollection(2).SetData chConstants.chDimCategories, chConstants.chDataLiteral, Columnas(3) ChartSpace1.Charts(0).SeriesCollection(2).SetData chConstants.chDimValues, chConstants.chDataLiteral, Valores(3) End Sub
Sub GraficoGlobal() Dim Lista_Fechas() Dim v_Confirmados() Dim v_Fallecidos() Dim v_Recuperados() Dim NumFechas, Num As Integer Dim p As Object Dim Texto As String Dim sInputJson As String Dim cab As Integer Set httpURL = New WinHttp.WinHttpRequest cadena = "https://covid19.mathdro.id/api/daily/" httpURL.Open "GET", cadena httpURL.Send Texto = httpURL.ResponseText If Texto = "[]" Then MsgBox ("No se obtuvo resultados") Exit Sub End If sInputJson = "{items:" & Texto & "}" Set p = JSON.parse(Texto) NumFechas = p.Count ReDim Lista_Fechas(NumFechas) ReDim v_Confirmados(NumFechas) ReDim v_Fallecidos(NumFechas) ReDim v_Recuperados(NumFechas) For Num = 1 To NumFechas Lista_Fechas(Num) = p.Item(Num).Item("reportDate") v_Confirmados(Num) = p.Item(Num).Item("confirmed").Item("total") v_Fallecidos(Num) = p.Item(Num).Item("deaths").Item("total") v_Recuperados(Num) = p.Item(Num).Item("recovered").Item("total") Next Num numitem = ChartSpace1.Charts(0).SeriesCollection.Count - 1 If numitem > 0 Then For i = 0 To numitem ChartSpace1.Charts(0).SeriesCollection.Delete (0) Next i End If Set chConstants = ChartSpace1.Constants ChartSpace1.Charts(0).SeriesCollection.Add ChartSpace1.Charts(0).SeriesCollection(0).Caption = "Infectados" ChartSpace1.Charts(0).SeriesCollection(0).SetData chConstants.chDimCategories, chConstants.chDataLiteral, Lista_Fechas ChartSpace1.Charts(0).SeriesCollection(0).SetData chConstants.chDimValues, chConstants.chDataLiteral, v_Confirmados ChartSpace1.Charts(0).SeriesCollection.Add ChartSpace1.Charts(0).SeriesCollection(1).Caption = "Fallecidos" ChartSpace1.Charts(0).SeriesCollection(1).SetData chConstants.chDimCategories, chConstants.chDataLiteral, Lista_Fechas ChartSpace1.Charts(0).SeriesCollection(1).SetData chConstants.chDimValues, chConstants.chDataLiteral, v_Fallecidos End Sub
Solo queda el evento load del formulario:
Private Sub Form_Load() Call ObenerPaises Call GraficoGlobal End Sub
Descargar Código Proyecto Gráfico Covid-19 (378 descargas )
En este proyecto, vamos a desarrollar una calculadora sencilla usando Visual Basic 6, que permite…
6 de septiembre de 2024 - La demanda de desarrolladores de software sigue en aumento,…
En un movimiento histórico, la Unión Europea ha aprobado la primera ley de inteligencia artificial…
¿Sigues trabajando con Visual Basic 6 y necesitas una forma eficiente de acceder a tus…
OpenAI revoluciona la interacción con IA: ChatGPT ahora interpreta imágenes En un avance significativo para la…
Bienvenido al Curso Básico de Visual Basic 6! Este curso está diseñado para llevarte a…
Este sitio utiliza cookies desea activarlas
Deja un comentario