Ir al contenido principal

Catálogos cascada en Delphi

Hola Bienvenidos otra semana a nuestro blog de programación, esta semana para darle continuidad al primer post del año acerca de comparar propuestas salariales, les quiero platicar acerca de los diferentes puestos de trabajo en el área de sistemas y como siempre haciendo un ejemplo de esto. 

Al hacer este post pensé en las siguientes preguntas: 
  • ¿Como sub-dividirías los puestos de Trabajo en TI?
Desde mi punto de vista las dividiría en : Infraestructura, Comunicaciones, Helpdesk, Software, Seguridad, Inteligencia Artificial (incluyendo BI,Datamining) y cada área se puede subdividir más 


  • ¿Qué área es la que tiene más demanda de Staff?
Creo que Software y Seguridad
  • ¿Que áreas crees que tengan más desarrollo?
Fullstack, Inteligencia Artificial, Seguridad de la Información 
  • ¿Les recomendarías a las personas aprender a programar?
Les diría claro que si, vale la pena estudiarlo, vi un articulo de OCC de Javier Castillo titulado
Las 10 carreras y áreas mejor pagadas para el 2020 en México  y entre ellas esta sistemas,software y programación con sueldos promedio de $30,000.00 MXN


Esquema Areas de Tecnologias de la Información

Ojala si algún consultor de RH o reclutador lee este post nos ayude con sus comentarios de estas preguntas.

Ahora entrando a materia en el ejemplo de este Post:

Objetivo del Programa en Delphi 7.0


Cuando nos piden ingresar una dirección, normalmente hacemos uso de una lista y otros campos se habilitan en dependencia del primer valor esto son son los Combobox o Listas desplegable en cascada, esto es para cuando queremos llenar un formulario y queremos que el usuario solo seleccione un dato de las lista que ya tenemos, esto para evitar que los datos ingresados puedan estar mal escritos o tengan espacios.

Para hacer este ejemplo, vamos a programar en Delphi y vamos utilizar una base de datos para poder leer la información.

Necesitamos 3 tablas

  1. Área
  2. Subarea
  3. Puestos
Vamos a crear las tablas en Microsoft Access

CREATE TABLE "Area" (
"Area_id" INTEGER,
"Area_name" TEXT,
PRIMARY KEY("Area_id")
);

CREATE TABLE "Subarea" (
"Subarea_id" INTEGER,
"Area_id" INTEGER,
"Subarea_name" TEXT,
PRIMARY KEY("Subarea_id")
);
CREATE TABLE "Puesto" (
"Puesto_id" INTEGER,
"Subarea_id" INTEGER,
"Puestoname" LONGTEXT,
"Puestodesc" TEXT

);

Diagrama Entidad Relación

Datos en Base de datos

Tabla de Puestos


Después vamos a tener nuestro programa, les comparto las pantallas de diseño




El código


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBCtrls, DB, ADODB, StdCtrls;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ComboBox1: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    ADOQuery1: TADOQuery;
    DataSource2: TDataSource;
    DataSource1: TDataSource;
    ADOQuery2: TADOQuery;
    ComboBox2: TComboBox;
    Label3: TLabel;
    Label4: TLabel;
    ComboBox3: TComboBox;
    ADOQuery3: TADOQuery;
    DataSource3: TDataSource;
    Label5: TLabel;
    Label6: TLabel;
    ADOQuery4: TADOQuery;
    DataSource4: TDataSource;
    Label7: TLabel;
    Label8: TLabel;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  id_area:String;
  id_subarea:String;
  id_puesto: String;

implementation

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin
   ADOQuery1.Active := False;
   ADOQuery1.Active := True;
   While not ADOQuery1.Eof do
   begin
      Combobox1.Items.Add(ADOQuery1.Fields[1].Text);
      ADOQuery1.Next;
   end;
      ADOQuery1.Active := False;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
   id_area :=Combobox1.Text;
  // showmessage('Hola ' + id_area);
   ADOQuery2.Active := False;
   ADOQuery2.SQL.Text := 'Select subarea_name FROM subarea INNER JOIN area ON area.id = subarea.area_id WHERE area_name ='+ Char(39) + id_area + Char(39);
   ADOQuery2.Active := True;
   Combobox2.Items.Clear;
   While not ADOQuery2.Eof do
   begin
      Combobox2.Items.Add(ADOQuery2.Fields[0].Text);
      ADOQuery2.Next;
   end;
      ADOQuery2.Active := False;
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
   id_subarea :=Combobox2.Text;
 //  showmessage('Holasub ' + id_subarea);
   ADOQuery3.Active := False;
   ADOQuery3.SQL.Text := 'Select puesto_name FROM puesto INNER JOIN subarea ON subarea.id = puesto.subarea_id WHERE subarea_name ='+ Char(39) + id_subarea + Char(39);
   ADOQuery3.Active := True;
   Combobox3.Items.Clear;
   While not ADOQuery3.Eof do
   begin
      Combobox3.Items.Add(ADOQuery3.Fields[0].Text);
      ADOQuery3.Next;
   end;
      ADOQuery3.Active := False;
end;


procedure TForm1.ComboBox3Change(Sender: TObject);
begin
   id_puesto :=Combobox3.Text;
//   showmessage('Hola puesto ' + id_puesto);
   ADOQuery4.Active := False;
   ADOQuery4.SQL.Text := 'Select Puesto_descripcion FROM puesto INNER JOIN subarea ON subarea.id = puesto.subarea_id WHERE subarea_name ='+ Char(39) + id_subarea + Char(39) + ' AND puesto_name =' + Char(39) + id_puesto + Char(39);
   ADOQuery4.Active := True;
 //  showmessage(ADOQuery4.SQL.Text);
   Memo1.Clear;
   Memo1.Lines.add(ADOQuery4.Fields[0].Value);

end;

end.

Explicación del programa en Delphi 7.0

  • Para este programa utilice la conexión a la base de datos con el objeto  TADOConnection para configurar la base de datos de Access
  • El objeto TADOQuery para poder configurar un query a la base de datos, fue un objeto por cada combox y el Memo. Cada query se configura en la propiedad ADOQuery2.SQL.Text 

  • Utilice el objeto TDataSource para ligar cada Query 


Otra opción pudo haber sido utilizar TDBMemo, TDBLookupComboBox

La ejecución del programa




Espero les sea de utilidad todo lo plasmado en este post, no olviden dejar sus comentarios y compartir nuestro blog, saludos!!!
Otro post relacionado a Delphi que pueden encontrar aquí es para hacer una calculadora https://www.programacionparatodos.com/2019/07/como-programarpascal-o-delphi.html

Pueden seguirnos también en nuestra página de Facebook

Comentarios

Entradas más populares de este blog

Graficar funciones en Python con dataframes

Bienvenidos a un nuevo post, en esta semana, en esta ocasión les quiero platicar acerca de una librería en Python que se llama  matplotlib  que nos sirve para gráfica funciones de  matemáticas. Habitualmente en Python existen muchas librerías, lo que hay que hacer es primero investigar si ya existe alguna que nos ayude y entenderla antes de inventar el hilo negro, en mi caso encontré la librería  Matplotlib Para instalar deben utilizar el comando PIP en 2.7 Instalando en Python 3.7 Si tienen Python 2.7 deben realizar la ejecución de estos 2 comandos desde consola python -m pip install -U pip python -m pip install -U matplotlib Aunque lo más recomendable es utilizar la versión 3.7 o superior de Python. Programa para graficar en Python import matplotlib.pyplot as plt import numpy as np import math as mt def move_spines():     """Esta funcion divide pone al eje y en el valor      0 de x para dividir claramente los valores positivos y     negativos.&quo

Ejemplo Macro en Word

Hola: ¿Sabían que no solo en Excel pueden hacer Macros?  ¡¡¡También en Outlook, Word, Power Point,Access  es posible hacer Macros!!!  ☺️ Ya que Word, Excel, Power Point,Access son de familia Microsoft y Visual Basic también es que podemos programar nuestras macros en esta paquetería. Como hemos visto antes, para poder programar nuestras macros, necesitamos primero configurar la Barra de tareas de Developer o Desarrollador Seleccionan el Menu File>Options>Customize Ribbon o en Español Archivo>Opciones>barra de tareas Despues la parte de seguridad de las macros Menu File>Options>Trus Center o Archivo>Opciones>Centro de Seguridad y marcamos como se ve en la imagen, la cuarta opción y el combo Ejemplo Vamos hacer un ejemplo donde, tengamos que generar varios diplomas de fin de curso, pero con una lista de Nombres , entonces vamos a crear un nuevo archivo en Word y le vamos a guardar como tipo Macro  Tenemos una plantill

Ejemplo Python para leer imagen y transformarla en una matriz

Como hemos visto en otros post, Python nos permite hacer programas de manera más rápida, en esta ocasión quiero compartirles un ejemplo para leer un archivo de imagen y como convertirlo en una matriz o un arreglo. Aplicaciones Poder hacer ingeniería de datos, es decir poder convertir una misma imagen en diferentes todos y utilizarlos para machine learning para reconocimiento de gatos, para ello hay que mostrar muchas imágenes a nuestro modelo es decir entrenarlo, para ello hay que colocarle imágenes claras y imagenes que no sean tan claras por ejemplo, se pone la imagen original y se agrega "ruido" para que se vea en rojos, grises, verdes. Se pudo utilizar para un mapa , para poder ver datos a detalle Se puede aplicar para manipular imágenes, por ejemplo agregar efectos  Seguramente a ustedes se les pueden ocurrir más aplicaciones Les comparto el ejemplo de como hacerlo en Jupiter y para hacer el ejemplo voy a utilizar el logo del blog es una imagen de 500x500 pixeles Los Pas