Herramientas Informaticas

Categoría: Uncategorized Página 10 de 12

Creando Cadena de Conexión dinámica con Variables de Configuración #8

Hasta este punto ya hemos creado la conexión con una cadena de conexión directa en la cual nosotros ponemos los datos de conexión a la base de de datos directamente, pero sabemos que la conexión del servidor, la base de datos, el usuario y la contraseña pueden estar cambiando, entonces mostraremos como tener una conexión dinámica basada en nuestras variables de configuración guardadas en el registro de Windows.

Nuestro código en el modulo crearModelo quedaría de la siguiente forma.

'IMPORTAMOS LAS LIBRERIAS NECESARIAS PARA LA CONEXIÓN A MYSQL/MARIADB
Imports MySqlConnector.MySqlConnection

'EMPIEZA EL MODULO
Module crearModelo

    ' CON PUBLIC SUB CREAMOS PROCEDIMIENTOS
    Public Sub generaModelo()

        ' VARIABLES PARA LA CONEXIÓN
        Dim strServidor As String
        Dim strBaseDeDatos As String
        Dim strUsuario As String
        Dim strContra As String


        'OBTENEMOS LOS DATOS DE CONFIGURACIÖN DEL REGISTRO DE WINDOWS PREVIAMENTE GUARDADAS
        If Not My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "servidor", Nothing) Is Nothing Then
            strServidor = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "servidor", Nothing).ToString()
            strBaseDeDatos = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "baseDeDatos", Nothing).ToString()
            strUsuario = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "usuario", Nothing).ToString()
            strContra = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "contra", Nothing).ToString()
        Else

            MsgBox("No se han capturado la conexión a la base de datos")
            Return

        End If


        ' METEMOS LA CADENA DE CONEXIÓN EN UNA VARIABLE
        Dim cadenaConexion = "Server=" & strServidor & ";User ID=" & strUsuario & ";Password=" & strContra & ";Database=" & strBaseDeDatos

        ' CREAMOS LA CONEXIÓN CON LA CADENA DE CONEXIÓN
        Dim connection = New MySqlConnector.MySqlConnection(cadenaConexion)

        Try

            ' SI SE ABRE LA CONEXIÓN MANDAMOS MENSAJE
            connection.Open()
            MsgBox("Conexion Correcta")

        Catch ex As Exception
            ' SI NO SE ABRE LA CONEXIÓN MANDAMOS MENSAJE DE ERROR
            MsgBox("ERROR " & ex.Message)

            Exit Sub
        End Try

    End Sub

End Module
Nos aseguramos de que tenemos los datos de conexión a la base de datos bien capturados
Hacemos la prueba y si sale el siguiente mensaje significa que la conexión se realizo correctamente

Guardando configuración de la base de datos usando My.Computer.Registry

Ya vimos como llamar ventanas para ponerlas en la ventana principal, lo que haremos en esta publicación será como guardar la configuración de la base de datos.

Para ello vamos a crear una ventana llamada configuración y vamos a crear los campos de texto necesarios como que son los siguientes:

  1. Server
  2. Base de datos
  3. Usuario
  4. Contraseña

Primero nos creamos la ventana nueva de configuración

Añadimos las cuatro etiquetas con las cajas de texto, textbox , en los nombres procuraremos mantener un estándar por ejemplo en los campos de textos siempre le pondremos un nombre empezando como txt como txtHost, txtBaseDeDatos, txtUsuario y txtContraseña

Igual lo vamos a lanzar desde el menú configuración y desde el botón abrir

Además para el menú salir agregamos el siguiente código

Me.Close()
Lo ideal fuera guardar esas variables en la variables de configuración pero en Visual Basic 2022 con .NET 6.0 no funciona, entonces nos queda usar el registro de windows “REGEDIT” con my.computer.registry

Entonces en el load de la porfa agregamos el siguiente código, lo que hace es leer el registro de Windows donde estaremos guardando los datos de conexión

       If Not My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "servidor", Nothing) Is Nothing Then

            Me.txtServidor.Text = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "servidor", Nothing).ToString()
            Me.txtBaseDeDatos.Text = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "baseDeDatos", Nothing).ToString()
            Me.txtUsuario.Text = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "usuario", Nothing).ToString()
            Me.txtContra.Text = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "contra", Nothing).ToString()

        End If

Quedaría de la siguiente forma, ponemos un if para ver si existe el registro y si existe lo asignamos a los controloles

Ahora para grabar el los valores que escribimos en los controles ponemos el siguiente código en el evento click del botón aceptar

 My.Computer.Registry.SetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "servidor", Me.txtServidor.Text)
        My.Computer.Registry.SetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "baseDeDatos", Me.txtBaseDeDatos.Text)
        My.Computer.Registry.SetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "usuario", Me.txtUsuario.Text)
        My.Computer.Registry.SetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "contra", Me.txtContra.Text)
Quedaría de la siguiente forma
Si todo salio bien vemos como se guardan los datos y aunque cerremos el programa al abrirlo estará la información guardada

En la próxima publicación veremos como hacer la conexión a la base de datos de MySQL

MINI TUTORIAL PROGRAMANDO EN VISUAL BASIC 2022

Anteriormente hemos visto como hacer fácil aplicaciones básicas y sencillas en cualquier distribución de GNU/Linux usando Gambas 3.

Ahora haremos la aplicación usando la ultima versión de Visual Basic que esta dentro de la versión community 2022

Como introducción ya deben saber que a estas alturas Gambas3 y Visual Basic Entran a la categoria de entornos RAD (Rapid application development) o en español (desarrollo rapido de aplicacion)

COMO INSTALAR FIREBIRD EN WINDOWS 10 / WINDOWS 11

Firebird al igual que MySQL/MariaDB es un administrador de base de datos de código abierto que nos puede servir en los programas que desarrollamos.

Las instrucciones básicas SELECT, INSERT, UPDATE son prácticamente similares, no existes diferencias significativas.

Una de las ventajas con las que cuenta Firebird son sus modos de instalación las cuales pueden ser classic, super classic, super, y embedden, esta ultima viene con una librería para hacer portable la aplicación.

EJEMPLO CFDI 4.0

Les dejo algunos ejemplos de la facturación electrónica que entrara obligatoriamente en abril de 2022

Ya se puede ir timbrando con esta versión a partir de enero de 2022

INGRESO

<?xml version="1.0" encoding="utf-8"?>
<cfdi:Comprobante xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd" Version="4.0" Serie="Serie" Folio="Folio" Fecha="2021-12-14T00:18:10" Sello="e" CondicionesDePago="CondicionesDePago" SubTotal="200" Descuento="1" Moneda="AMD" TipoCambio="1" Total="199.16" TipoDeComprobante="I" Exportacion="01" MetodoPago="PPD" FormaPago="99" LugarExpedicion="20000"  xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <cfdi:Emisor Rfc="EKU9003173C9" Nombre="ESCUELA KEMPER URGATE SA DE CV" RegimenFiscal="601" />
  <cfdi:Receptor Rfc="URE180429TM6" Nombre="UNIVERSIDAD ROBOTICA ESPAÑOLA SA DE CV" DomicilioFiscalReceptor="45601" RegimenFiscalReceptor="601" UsoCFDI="G01" />
  <cfdi:Conceptos>
    <cfdi:Concepto ClaveProdServ="50211503" Cantidad="1" ClaveUnidad="H87" Unidad="Pieza" Descripcion="Cigarros" ValorUnitario="200.00" Descuento="1" Importe="200.00" ObjetoImp="02">
      <cfdi:Impuestos>
        <cfdi:Traslados>
          <cfdi:Traslado Base="1" Importe="0.16" Impuesto="002" TasaOCuota="0.160000" TipoFactor="Tasa"/>
        </cfdi:Traslados>
        <cfdi:Retenciones>
          <cfdi:Retencion Base="1" Impuesto="001" TipoFactor="Tasa" TasaOCuota="0.100000" Importe="0.00" />
          <cfdi:Retencion Base="1" Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.106666" Importe="0.00" />
        </cfdi:Retenciones>
      </cfdi:Impuestos>
    </cfdi:Concepto>
  </cfdi:Conceptos>
  <cfdi:Impuestos TotalImpuestosRetenidos="0.00" TotalImpuestosTrasladados="0.16">
    <cfdi:Retenciones>
      <cfdi:Retencion Impuesto="001" Importe="0.00" />
      <cfdi:Retencion Impuesto="002" Importe="0.00" />
    </cfdi:Retenciones>
    <cfdi:Traslados>
      <cfdi:Traslado Base="1" Importe="0.16" Impuesto="002" TasaOCuota="0.160000" TipoFactor="Tasa"/>
    </cfdi:Traslados>
  </cfdi:Impuestos>
</cfdi:Comprobante>
<?xml version="1.0" encoding="utf-8"?>
<cfdi:Comprobante Fecha="2021-12-14T07:41:44" Folio="679" FormaPago="01" LugarExpedicion="22214" MetodoPago="PUE" Moneda="MXN" Sello="e" Serie="F" SubTotal="100.00" Exportacion="01" TipoDeComprobante="I" Total="100.00" Version="4.0" xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd">
  <cfdi:InformacionGlobal Periodicidad="01" Meses="01" Año="2021"/>
  <cfdi:Emisor Rfc="EKU9003173C9" Nombre="ESCUELA KEMPER URGATE SA DE CV" RegimenFiscal="601" />
  <cfdi:Receptor Rfc="URE180429TM6" Nombre="UNIVERSIDAD ROBOTICA ESPAÑOLA SA DE CV" DomicilioFiscalReceptor="45601" RegimenFiscalReceptor="601" UsoCFDI="G01" />
  <cfdi:Conceptos>
    <cfdi:Concepto Cantidad="1" ClaveProdServ="10201801" ClaveUnidad="E48" Descripcion="PRUEBA " Importe="100.000000" NoIdentificacion="02" Unidad="SERVICIO" ValorUnitario="100.000000" ObjetoImp="02">
      <cfdi:Impuestos>
        <cfdi:Traslados>
          <cfdi:Traslado Base="1" Importe="1" Impuesto="002" TasaOCuota="0.160000" TipoFactor="Tasa"/>
        </cfdi:Traslados>
        <cfdi:Retenciones>
          <cfdi:Retencion Base="1" Importe="1" Impuesto="002" TasaOCuota="0.040000" TipoFactor="Tasa"/>
        </cfdi:Retenciones>
      </cfdi:Impuestos>
      <cfdi:InformacionAduanera NumeroPedimento="21  47  3807  8003832" />
      <cfdi:Parte ClaveProdServ="50211503" ValorUnitario="200.00" Importe="200.00" Cantidad="1" Unidad="Pieza" NoIdentificacion="123" Descripcion="cosas" />
    </cfdi:Concepto>
  </cfdi:Conceptos>
  <cfdi:Impuestos TotalImpuestosRetenidos="1" TotalImpuestosTrasladados="1">
    <cfdi:Retenciones>
      <cfdi:Retencion Importe="1" Impuesto="002"/>
    </cfdi:Retenciones>
    <cfdi:Traslados>
      <cfdi:Traslado Base="1" Importe="1" Impuesto="002" TasaOCuota="0.160000" TipoFactor="Tasa"/>
    </cfdi:Traslados>
  </cfdi:Impuestos>
</cfdi:Comprobante>

Traslado

<?xml version="1.0" encoding="utf-8"?>
<cfdi:Comprobante xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd" Version="4.0" Serie="Serie" Folio="Folio" Fecha="2021-12-14T00:18:10" Sello="e" CondicionesDePago="CondicionesDePago" SubTotal="0" Descuento="0" Moneda="AMD" TipoCambio="1" Total="0" TipoDeComprobante="T" Exportacion="01" LugarExpedicion="20000"  xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <cfdi:Emisor Rfc="EKU9003173C9" Nombre="ESCUELA KEMPER URGATE SA DE CV" RegimenFiscal="601" />
  <cfdi:Receptor Rfc="URE180429TM6" Nombre="UNIVERSIDAD ROBOTICA ESPAÑOLA SA DE CV" DomicilioFiscalReceptor="45601" RegimenFiscalReceptor="601" UsoCFDI="G01" />
  <cfdi:Conceptos>
    <cfdi:Concepto ClaveProdServ="50211503" NoIdentificacion="UT421511" Cantidad="1" ClaveUnidad="H87" Unidad="Pieza" Descripcion="Cigarros" ValorUnitario="0.00" Importe="0.00"  ObjetoImp="01">
      <cfdi:InformacionAduanera NumeroPedimento="21  47  3807  8003832" />
      <cfdi:Parte ClaveProdServ="50211503" ValorUnitario="200.00" Importe="200.00" Cantidad="1" Unidad="Pieza" NoIdentificacion="123" Descripcion="cosas" />
    </cfdi:Concepto>
  </cfdi:Conceptos>
</cfdi:Comprobante>

Pagos

<?xml version="1.0" encoding="utf-8"?>
<cfdi:Comprobante xsi:schemaLocation="http://www.sat.gob.mx/cfd/4 http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd http://www.sat.gob.mx/Pagos20 
 http://www.sat.gob.mx/sitio_internet/cfd/Pagos/Pagos20.xsd" xmlns:pago20="http://www.sat.gob.mx/Pagos20" Version="4.0" Serie="Serie" Folio="Folio" Fecha="2021-12-16T00:18:10" Sello="e" SubTotal="0" Moneda="XXX" Total="0.00" TipoDeComprobante="P" Exportacion="01" LugarExpedicion="20000"  xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <cfdi:Emisor Rfc="EKU9003173C9" Nombre="ESCUELA KEMPER URGATE SA DE CV" RegimenFiscal="601" />
  <cfdi:Receptor Rfc="URE180429TM6" Nombre="UNIVERSIDAD ROBOTICA ESPAÑOLA SA DE CV" DomicilioFiscalReceptor="45601" RegimenFiscalReceptor="601" UsoCFDI="G01" />
  <cfdi:Conceptos>
    <cfdi:Concepto ClaveProdServ="84111506" Cantidad="1" ClaveUnidad="ACT" Descripcion="Pago" ValorUnitario="0.00" Importe="0.00" ObjetoImp="01" />
  </cfdi:Conceptos>
  <cfdi:Complemento>
		<pago20:Pagos Version="2.0">
            <pago20:Totales MontoTotalPagos="200.00" />
            <pago20:Pago FechaPago="2021-12-15T00:00:00" FormaDePagoP="01" MonedaP="MXN" Monto="200.00" TipoCambioP="1">
                <pago20:DoctoRelacionado IdDocumento="bfc36522-4b8e-45c4-8f14-d11b289f9eb7" MonedaDR="MXN" NumParcialidad="1" ImpSaldoAnt="200.00" ImpPagado="200.00" ImpSaldoInsoluto="0.00" ObjetoImpDR="01" EquivalenciaDR="1"/>
            </pago20:Pago>
		</pago20:Pagos>
	</cfdi:Complemento>
</cfdi:Comprobante>

Fuente

Ejemplos 4.0 – Timbrado Masivo CFDI (sw.com.mx)

Manjaro 2022-01-02, la primera Stable del año llega con Python 3.10, entre otras novedades

(adsbygoogle = window.adsbygoogle || []).push({}); Estamos en domingo, segundo día de 2022, y los desarrolladores que hay detrás de uno de los alumnos más aventajados de Arch Linux habían lanzado una Testing hace poco, por lo que no se esperaba una versión estable tan pronto. Pero Manjaro 2022-01-02 ha llegado, y lo ha hecho con […]

Manjaro 2022-01-02, la primera Stable del año llega con Python 3.10, entre otras novedades

QUE HACER DESPUES DE INSTALAR WINDOWS 11

No hace mucho ha sido lanzado la ultima versión de Windows, Windows 11 y pese que aun no es compatible con la mayoría de las maquinas mucha gente se las arregla para saltarse los requisitos minimos

Como recomendación si el equipo no cumple con lo requisitos mínimos es mejor dejar el Windows 10 para el mas correcto funcionamiento, ya que seria si no cumple con los requisitos será aun peor que tener el Windows10

Después de instalar es checamos en el administrador de dispositivos y si hay dispositivos sin controladores lo mejor es dejar que Windows 11 se actualice, normal mente lo hace en automático en el primer inicio

Si al reiniciar observamos que aun hay dispositivos sin controlador instalado podemos usar Driver Booster, que se encargara de buscar e instalar los controladores mas básico de manera gratuita

Al momento de instalarlo debemos elegir la instalación personalizada para evitar instalar programas o publicidad no deseada

Mini Tutorial Programando en GAMBAS3

Les dejo este mini tutorial de gambas en donde vemos como instalarlo, como programar las ventanas, eventos, veremos como tener acceso a la base de datos MySQL, Guardar configuraciones en la maquina “Settings“, como guardar archivos en el disco duro y finalmente como publicar el programa en la granja de software

Función en GAMBAS3 para convertir la primera letra de una cadena a Mayúscula

Vimos en la publicación anterior que usamos una función para convertir la primera letra de un texto a mayúsculas por lo tanto vamos a explicar como funciona este código

Es decir si ponemos strPrimeraMayuscula(“prueba”) nos va a devolver “Prueba“, con la P Mayúscula

Primero creamos otro modulo llamado utilitarias, este nos servirá para meter funciones generales

Vemos que se usa la funcion Mid$ que en el primer caso mandamos los parametros 1,1 lo cual solo tomara en cuenta la primer letra del texto y a eso lo metemos a la funcion UCase que lo convierte a mayuscula, luego concatena con Mid$ sin usar UCase pero empezando desde la segunda posición
' Gambas module file

Public Function strPrimeraMayuscula(strCadena As String) As String
  
  Return UCase(Mid$(strCadena, 1, 1)) & Mid$(strCadena, 2, 100) 

End

En la siguiente publicación veremos como generar el texto que va dentro del archivo controlador

QUE HACER DESPUES DE INSTALAR WINDOWS 10

Windows es uno de los sistemas operativos mas utilizados por lo menos en mi región para el uso del hogar, escuela y trabajo, así que vamos a dedicarla unas publicaciones, así como también probar el uso de nuestro aplicaciones.

Cada quien tiene necesidades diferentes en su equipo de computo pero vamos a dejar las aplicaciones que posiblemente todos podrían necesitar

Primero que nada esta el office ya sabemos que existe un Microsoft office que es de paga y que normalmente el formateador profesional de la colonia del estero les pone un office pirata, lo cual yo no recomiendo hacerlo, es mejor tener el original ya que es es improbable que suceda pero puede pasar de que dé repente puedan perder todos sus archivos por algún virus encriptador.

Así que si le quieren instalar alguna paquetería de office recomiendo OnlyOffice

Página 10 de 12

Creado con WordPress & Tema de Anders Norén