Herramientas Informaticas

Categoría: Uncategorized Página 9 de 11

Crear Ejecutable del programa Visual Basic 2022

Y bien ya tenemos nuestro código fuente terminado, ahora lo que sigue poder distribuir nuestro programa para ello vamos a crear el ejecutable a continuación mostramos como hacerlo

Primero Elegimos una carpeta fácil de ubicar, por ejemplo, nosotros crearnos una carpeta llamada resultado en el escritorio.

En visual Studio 2022 Community, en el proyecto nos vamos al menú compilar y después elegimos publicar, nos saldrá la siguiente ventana.

Seleccionamos la opción Carpeta
Elegimos la opción Carpeta
Elegimos la ubicación donde se va a generar el ejecutable
En la configuración le ponemos Producir un único archivo y ReadyToRun
Finalmente de damos click en publicar y nos va a generar el EXE
Y listo ya tenemos nuestro ejecutable listo para usar

Saludos en el proximo video veremos como subir nuestro proyecto a source forge

Como guardar archivos generados en texto en archivo

Ya vimos como generar el texto del modelo, vista y controlador tomando en base solo una tabla de MariaDB/MySQL tomando las columnas y campos con llave primaria, ahora lo que nos falta por hacer es guardar esa información en archivos .PHP en el proyecto para ello simplemente hacemos lo siguiente.

Primero guardamos en registro de windows la ruta para que se valla quedando guardando como default, esto lo hacemos al darle click al botón aceptar.

Lo hacemos con el siguiente código

   'Guardamos en el registro de windows la variable de txtTabla
       My.Computer.Registry.SetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "txtRuta", Me.txtRuta.Text)

Luego en el evento load de la ventana creador de cátalogo agregamos para leer la variable donde guardamos la ruta del registro de windows

  'Leemos la variable por default de la ruta desde el registro de windows
        If Not My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "txtRuta", Nothing) Is Nothing Then

            Me.txtRuta.Text = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "txtRuta", Nothing).ToString()

        End If

Ya por ultimo grabamos los textos en los archivos correspondientes, es importante usar la codificación ASCII para evitar errores en el ajax

        'GUARDAMOS LOS ARCHIVOS

        'GUARDAMOS MODELO EN EL ARCHIVO
        My.Computer.FileSystem.WriteAllText(Me.txtRuta.Text & "/modelos/" & txtTabla.Text & ".modelo.php", strModelo, False, System.Text.Encoding.ASCII)

        'GUARDAMOS CONTROLADOR EN EL ARCHIVO
        My.Computer.FileSystem.WriteAllText(Me.txtRuta.Text & "/controladores/" & txtTabla.Text & ".controlador.php", strControlador, False, System.Text.Encoding.ASCII)

        'GUARDAMOS VISTA EN EL ARCHIVO
        My.Computer.FileSystem.WriteAllText(Me.txtRuta.Text & "/vistas/modulos/" & txtTabla.Text & ".php", strVista, False, System.Text.Encoding.ASCII)

Y listo ya con esto nos debe crear los archivos

Solo tendremos que crear manualmente el menú y agregar en plantilla.php para que corra la visa

Saludos en el próximo video veremos como subir el proyecto para que lo puedan descargar

Creando texto para el archivo del catalogo controlador PHP Visual Basic 2022 en base a una tabla creada

Ya vimos como crear el modelo, dijimos que mostraremos como crear el archivo de modelo, pero mejor mostraremos como generar el texto del controlador en base a los campos de la tabla, es un poco mas fácil

a continuación les dejo el código fuente

Imports System.Windows.Forms

Public Class frmCreaCatalogo

    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click

        Dim strModelo As String
        Dim strControlador As String

        My.Computer.Registry.SetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "txtTabla", Me.txtTabla.Text)

        strModelo = crearModelo.generaModelo()
        strControlador = crearControlador.generaControlador()


        Me.DialogResult = System.Windows.Forms.DialogResult.OK
        Me.Close()
    End Sub

    Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.Close()
    End Sub

    Private Sub btnRuta_Click(sender As Object, e As EventArgs) Handles btnRuta.Click

        dlgRuta.ShowDialog()

        txtRuta.Text = dlgRuta.SelectedPath


    End Sub

    Private Sub frmCreaCatalogo_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        If Not My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "txtTabla", Nothing) Is Nothing Then

            Me.txtTabla.Text = My.Computer.Registry.GetValue("HKEY_CURRENT_USER\CREADORMVCPHP", "txtTabla", Nothing).ToString()

        End If
    End Sub
End Class

Saludos y espero que les sirva

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

Página 9 de 11

Creado con WordPress & Tema de Anders Norén