Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-05-2013
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Eso es una queja constante entre programadores (no ser bueno en diseño). Pero ahora es mas facil que nunca dotar de una interface atractiva los programas. Una forma es usando un GUI Pack:

http://graphicriver.net/search?utf8=...&term=gui+pack

Y seguir las guis de buen diseño de apps, como la interface humana de Apple - que igual es aplicable a otras plataformas-.

Tambien se pueden copiar ideas de frameworks como http://twitter.github.io/bootstrap/. Con el nuevo estilo de "apps planas" que es la forma mas barata y directa de hacer un diseño "facil" no es complicado:

http://dribbble.com/search?q=flat+gui

Y con un conjunto de iconos decente (hay muchos iconos gratis como http://www.webappers.com/category/design/icons/ y de pago (estos los compre) http://www.iconshock.com) estamos casi listos.
__________________
El malabarista.
Responder Con Cita
  #2  
Antiguo 23-05-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pero esas cosas no sirven para delphi, ¿no?
Responder Con Cita
  #3  
Antiguo 06-06-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Para que quede más claro el uso de la tabla clientes, con direcciones, contactos, personas de contacto y bancos os pongo un esquema, que acabo de hacer con un nuevo programa Free, que esta muy bien



el programa se llama Ibeasy+ y lo podéis bajar de http://ibeasy.software.informer.com/.

Ahora que creo quede más claro mi idea de uso de las tablas modulares (no si sera correcto), paso a explicar un par de términos y su uso básico, para que luego al usarlos estén un pocos más claros.

Stock: Creo que es el más común y se refiere a la cantidad de mercancía que tenemos disponible

ADR: Se refiere al transporte de mercancía por carretera y una gran cantidad de países se han acogido al sistema, es obligatorio en los países de la comunidad europea y en todos los acogidos a este sistema. El llevar mercancías que necesitan ADR y no llevarlo conlleva severas multas al conductor y a la empresa, e incluso in movilización del vehículo y la mercancías. para más información

http://es.wikipedia.org/wiki/Acuerdo..._por_carretera

Trazabilidad: Este es el punto más peliagudo, la mayor parte de la gente cree, que sólo es obligatorio a los productos comestibles, pero realmente hay que aplicarla a otros muchos sectores, como todos los derivados de los químicos, manufacturados, alimentación, agricultura, residuales, Nucleares y un largo etc.

Hay que tener en cuenta que la trazabilidad es desde la creación del producto (inclusive anterior de los proveedores) hasta el consumidor final (quedando exento en este punto supermercados, tiendas y pocos más al no tener un control exacto de a quién se le ha vendido la mercancía) la trazabilidad viene controlada por lo que se llaman seriales, lotes, etc e implica que toda una producción hecha o creada (Artificial o naturalmente) tenga un mismo número de registro, asignando el número de registro (lote) la cantidad/formato de producto sacado, aunque el (lote) no varia hay que especificar cantidad lote, pongo un ejemplo:

Hacemos 1000 Litros de lavavajillas lote 130001 y sacamos en los siguientes formatos
Lote................Cantidad.............Formato...............Total Litros
--------------------------------------------------------------
130001............20.....................Garrafas 25 L.........500 L.
130001............80.....................Garrafas 5 L...........400 L.
130001............100...................Botellas 1 L............100 L.

Esto obliga a tener controlado las ordenes de producción y al control de la trazabilidad de los 1000 Litros del lote 130001, mediante partes de rotura, utilización interna, en fabricación uso como materias primas o re conversión y por supuesto ventas (albaranes, facturas, etc.)

Hay que usar el sistema de recursividad, con la trazabilidad, al igual que con el Stock, es decir si eliminamos una factura, cambiamos la cantidad a menos o nos devuelven una mercancía. eta debe ser controlada tanto en el stock como en su control de lotes.

La trazabilidad permite a los organismos públicos, en contacto con las empresas a tener controlado todo el proceso de una mercancía, aunque se hay trasformado en otra, desde su origen al consumidor final (hipotéticamente), el responsable del problema pagará una multa, pero si alguna de las partes no tiene la trazabilidad, la multa puede ser mucho mayor y si se produjesen muertes o lesiones graves, puede llevar incluso a prisión, en caso de tenerla controlada, esto muy difícilmente ocurriría, salvo que seamos los responsables.

Y por último, es muy frecuente que tengamos que controlar junto con la trazabilidad la caducidad, ya que muchos productos, alimentarios, químicos, etc, tiene caducidad.

Para más información podéis dirigiros a http://es.wikipedia.org/wiki/Trazabilidad

Ley de Protección de Datos (LPD): Esta ley obliga a todas las empresas que controlen cual quier tipo de datos de clientes, proveedores, etc. a tener contratado una empresa gestora de dicha ley, esto obliga al texto que deben aparecer, en emails, facturas y demás documentos y aplicarla a nuestro programa es bastante simple, se trata de tener 2 o 3 memos, que su texto se pueda editar y guardar, para posibles cambios futuros y que aparezcan en nuestros documentos físicos como digitales. aparte de esto, obliga a que el cliente si así lo pide, no sea puesto en listados de ningún tipo, e incluso sea borrada su información, pero tener cuidado, por que hacienda esta por encima de esta Ley y si borráis, datos antes del cierre con hacienda y no aparecen los datos del cliente podéis tener un grabe problema. Las multas por no tener este sistema aplicado van desde los 6.000 euros a los 600.000 o el cierre de la empresa con posibilidad de prisión.

Para más información ir a http://noticias.juridicas.com/base_d...lo15-1999.html

Lotes: Así es como voy a denominar el control identificativo de nuestra trazabilidad. Los lotes pueden tener derivados, pudiendo ser padres e hijos, o maestros y esclavos. Quiero decir que de un producto con un lote se puede vender en varios productos diferentes, si haber alteración, cada producto tendrá un lote pero tenemos que tener controlado de que lo te viene. Ejemplo:

Hacemos un Desengrasante base lote 130002 de este embotellamos una parte como limpia suelos desengrasante u otro artículo y a este último le asignarnos el lote 130003, quedando de la siguiente manera
Lote Padre <> Lote Hijo
130002...........130003 (este realmente es un derivado sin modificación del lote 130002 y cuando pidamos un informe del lote 130002 debe darnos la información del lote 130003, para tener la trazabilidad correcta e igualmente pero al revés si la solicitamos del 130003.

Ordenes de producción: Esto implica el proceso para la creación del lote con el producto fabricable (no confundir con el producto final), implica el operario, lote y formatos y cantidades.

Diferencias entre un producto fabricable y el producto final: El producto fabricable, es el producto que vamos a fabricar y el producto final es el producto ya en su formato. Ejemplo

Producto Fabricable: Lavavajillas [u]producto finales[/U], Lavavajillas 5L, Lavavajillas 25L, Lavavajillas 1L , Lavavajillas a granel, etc.

Estos conceptos deben quedar muy claros, ya que si no es fácil perderse más adelante, así que si tenéis dudas, preguntar ahora antes de seguir, y por supuesto, los que no sois de España, debéis informaros de las leyes en vuestro país. Pero la mayoría de programas no tiene estos conceptos que algunos de ellos son obligatorios hace más de una década.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #4  
Antiguo 07-06-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Empezamos ahora con artículos

Estructura de la base de datos

Cita:
CREATE TABLE ARTICULOS (
ID INTEGER NOT NULL,
CODIGO T20 /* T20 = VARCHAR(20) */, //Código del artículo
PRODUCTO T80 /* T80 = VARCHAR(80) */, //Nombre del producto
COSTE POR /* POR = NUMERIC(15,4) */, //Coste del producto
CODIGOPROVEEDOR T20 /* T20 = VARCHAR(20) */, //Código del proveedor
PV1 POR /* POR = NUMERIC(15,4) */, //Precio de venta tarifa 1
PV2 POR /* POR = NUMERIC(15,4) */, //Precio de venta tarifa 2
PV3 POR /* POR = NUMERIC(15,4) */, //Precio de venta tarifa 3
PV4 POR /* POR = NUMERIC(15,4) */, //Precio de venta tarifa 4
PV5 POR /* POR = NUMERIC(15,4) */, //Precio de venta tarifa 5
DTO1 POR /* POR = NUMERIC(15,4) */, //Descuento de venta tarifa 1
DTO2 POR /* POR = NUMERIC(15,4) */, //Descuento de venta tarifa 2
DTO3 POR /* POR = NUMERIC(15,4) */, //Descuento de venta tarifa 3
DTO4 POR /* POR = NUMERIC(15,4) */, //Descuento de venta tarifa 4
DTO5 POR /* POR = NUMERIC(15,4) */, //Descuento de venta tarifa 5
FAMILIA T20 /* T20 = VARCHAR(20) */, //Familia del artículo
CODIGOBARRAS39 T20 /* T20 = VARCHAR(20) */, //Código de barras libre
CODIGOBARRASEAN13 T20 /* T20 = VARCHAR(20) */, //Códigos de barra estándar Ean 13
PESO POR /* POR = NUMERIC(15,4) */, //Peso del formato del producto
PROPIO LOG /* LOG = CHAR(1) */, //Si es un artículo de fabricación propia
TRAZABILIDAD LOG /* LOG = CHAR(1) */, //Si lleva trazabilidad
SERVICIO LOG /* LOG = CHAR(1) */, //Si es un servicio
CADUCO LOG /* LOG = CHAR(1) */, //Si el artículo es caduco (se lleva la caducidad con el lote
TIPOIMPUESTO INTEGER, //Tipo de aimpuesto aplicable (va con el nombre del impuesto en configuración)
COMISIONMAXIMA POR /* POR = NUMERIC(15,4) */, //Comisión máxima a pagar en este artículo, prevalece sobre la comisión en el agente
DTOMAXIMO POR /* POR = NUMERIC(15,4) */, //Descuento máximo del artículo (prevalece sobre los descuentos en clientes o aplicados en DTO1...DTO5)
RAPEL1 INTEGER, //Rapel de ventas en tarifa 1
RAPEL2 INTEGER, //Rapel de ventas en tarifa 2
RAPEL3 INTEGER, //Rapel de ventas en tarifa 3
RAPEL4 INTEGER, //Rapel de ventas en tarifa 4
RAPEL5 INTEGER, //Rapel de ventas en tarifa 5
ADR VARCHAR(150) CHARACTER SET NONE, //Descripción de la frase de adr
ADREXEPCION INTEGER, // formatos que estan exentos del adr según el propio ADR
ADRLIMITE INTEGER //Limite de mercancía a transportar por un conductor y vehículo sin el carnet y permiso de mercancías peligrosas
);
Rapel: Los clientes que se les hace descuento por rapel, deben hacerles albaranes, unificando a la hora de facturar, la mercancía por código, de manera que si el total de unidades vendidas es igual o superior al rapel de su tarifa se aplica el precio de esta tarifa, en caso contrario se aplica el PVP normal.

Escala de Rapel: Es cuando el cliente parte de un precio normal y según sus ventas finales a la hora de facturar se aplica la tarifa según el rapel alcanzado (no lo he usado nunca y nunca me lo han pedido)


Ahora la tabla NOTAS
Cita:
CREATE TABLE NOTAS (
ID INTEGER NOT NULL,
NOMBREMODULO T20 /* T20 = VARCHAR(20) */, //Nombre del módulo
CODIGO T20 /* T20 = VARCHAR(20) */, //Código del módulo al que pertenece
DESCRIPCION T20 /* T20 = VARCHAR(20) */, //Descripción dentro del modulo, (Avisos, Notas, Alertas,etc.)
NOTAS MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */ //Campo memo para notas
);
Y por último La tabla imágenes

Cita:
CREATE TABLE IMAGENES (
ID INTEGER NOT NULL,
NOMBREMODULO T20 /* T20 = VARCHAR(20) */, //Nombre del módulo
CODIGO T20 /* T20 = VARCHAR(20) */, //Código del módulo al que pertenece
DESCRIPCION T20 /* T20 = VARCHAR(20) */, //Descripción dentro del modulo, (Foto, interior, exterior, detalle, etc.)
IMAGENES IMG /* IMG = BLOB SUB_TYPE 0 SEGMENT SIZE 80 */ //Imagen a mostrar
);
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #5  
Antiguo 07-06-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Me gustaría saber si esta quedando claro lo que llevo explicado, o tengo que ser más claro.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #6  
Antiguo 07-06-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Yo lo entiendo bien, y eso que soy bastante torpe

Gracias, muy completo, la verdad
Responder Con Cita
  #7  
Antiguo 08-06-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Hola compañero antes de seguir considero oportuno poner algunas imágenes del programa de facturación que hice para mi antigua empresa.

Primero veréis que hay datos tachados, por que lo que os muestro son con información real y hay que respetar la protección de datos, así que pido disculpas, aun así creo que queda bastante claro

Para empezar una imagen del tema de los lotes



Como podéis ver marco en rojo el lote del producto que buscamos, en verde sería el maestro (en este caso es el mismo que hemos introducido) y en naranja el lote derivado que vemos que es el 120402, se puede dar el caso que el lote 120401, tenga el derivado que tenga, pero también tenga un maestro que pueda ser por ejemplo el 120399.

Ya que hablo de mi antiguo programa, que por cierto este que empiezo nuevo es por hacerlo más sencillo y eficaz, os pongo una imagen de un proceso que más abajo os explico.



como podéis ver se trata de la edición de Facturas, con datos reales, os pongo imagen del menú, del visor de documentos (presupuestos, pedidos, albaranes y facturas), del editor de documentos y por último el editor de artículos, que contiene aparte de la información habitual, contiene lotes disponible (La única condición será que 1º el stock disponibles sea igual o superior a 1 y 2º que la fecha de caducidad sea inferior a la actual), por supuesto esto lo veis en el apartado llamado lotes y vencimientos, después del Stringrid hay una última linea que nos permite introducir un lote de forma manual (Se da en más de una ocasión, de que aun no hemos dado la entrada de la mercancía y tengamos que facturarla))
Por otro lado en el apartado precios veréis algo que es muy poco común, por un lado 5 tarifas de precios (esto es normal) y por otro precio especial del cliente, esto si os dais cuenta no esta en la estructura ni de clientes, ni en la de artículos, si no que esta en una tabla independiente y para que se muestre debe darse las siguientes condiciones el código del cliente y el del artículo, pero ya lo veremos mucho más adelante.

Por cierto algo que es muy posible que en breve sea obligatorio en la facturación y demás documentos de ventas, es que deben tener el peso por artículos, el total de la factura y una hoja de ruta detallando la factura, peso total de la misma y peso total de mercancía transportada. Pero aún no es obligatorio.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"

Última edición por José Luis Garcí fecha: 08-06-2013 a las 00:36:39.
Responder Con Cita
  #8  
Antiguo 20-06-2013
Caren Caren is offline
Registrado
NULL
 
Registrado: may 2013
Posts: 9
Poder: 0
Caren Va por buen camino
Consulta programa gestion de Jose Luis

Como esta al principio no cuesta hecharle un ojo, ademas como trabaja este señorazo.
Mi consulta es para el que ha hecho o esta haciendo este programa si tal cual esta funciona a pesar de que falten algunas cosas como el tema de facturacion y los componentes que se necesitan si siguen estando para bajar y con que nombre, encontre NewPAnelDb, SpeedButtonBC, GroupBoxJL pero no veo los DbComboBoxExt, DBIBCheckbox, DBIBMemo supongo que estaran con algun otro nombre.
Quiero dar las gracias a todos los que sabeis por poner vuestros trabajos para los que no tenemos ni idea vayamos aprendiendo un poquito.
Responder Con Cita
  #9  
Antiguo 20-06-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Los componentes

NewPAnelDb se encuentran en http://terawiki.clubdelphi.com/Delph...tes-Funciones/ con el nombre NewPanelDB.zip, también su código completo en http://www.clubdelphi.com/foros/show...ght=NewPAnelDb

SpeedButtonBC se encuentran en http://terawiki.clubdelphi.com/Delph...tes-Funciones/ con el nombre SpeedbutonColor_y_Demo.rar, también su código completo en http://www.clubdelphi.com/foros/show...ht=Speedbutton

los DbComboBoxExt, DBIBCheckbox, DBIBMemo,GroupBoxJL se encuentran en http://terawiki.clubdelphi.com/Delph...tes-Funciones/ con el nombre PACKJL.zip expuesto en el link http://www.clubdelphi.com/foros/show...ht=Speedbutton

Los TDBNewEditJL y TMyNewEditJL http://www.clubdelphi.com/foros/showthread.php?t=83280


Enlaces que pueden interesar

http://www.clubdelphi.com/foros/showthread.php?t=79416 para las copias de seguridad
http://www.clubdelphi.com/foros/showthread.php?t=83170 Módulos (ABM) Altas _Bajas y Modificaciones
http://www.delphiaccess.com/forum/fi...5287/#msg35287 Sobre los IBDataSet
http://www.clubdelphi.com/foros/showthread.php?t=78207 Niveles de usuario
http://www.clubdelphi.com/foros/showthread.php?t=72450 Para crear modulos (ABM)
http://www.clubdelphi.com/foros/showthread.php?t=72563 Alguno de los temas tratados en el tutorial
http://www.clubdelphi.com/foros/showthread.php?t=69111 Iconos
http://www.clubdelphi.com/foros/showthread.php?t=68120 Todo el programa en una barra, interesante y lo he usado en algún programita pequeño
http://www.clubdelphi.com/foros/showthread.php?t=74475 Rutinas de programación
http://www.clubdelphi.com/foros/showthread.php?t=73826 Para los Hint de los programas
http://www.clubdelphi.com/foros/show...ebird+tutorial Tutorial de Caral para empezar con Firebird
http://webs.satlink.com/usuarios/c/c...ajarDelphi.htm Curso muy completo de Delphi

Y seguro encontraras muchísimos más
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"

Última edición por José Luis Garcí fecha: 20-06-2013 a las 10:28:04.
Responder Con Cita
  #10  
Antiguo 20-06-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Cita:
Empezado por Caren Ver Mensaje
Como esta al principio no cuesta hecharle un ojo, ademas como trabaja este señorazo.
Mi consulta es para el que ha hecho o esta haciendo este programa si tal cual esta funciona a pesar de que falten algunas cosas como el tema de facturacion y los componentes que se necesitan si siguen estando para bajar y con que nombre, encontre NewPAnelDb, SpeedButtonBC, GroupBoxJL pero no veo los DbComboBoxExt, DBIBCheckbox, DBIBMemo supongo que estaran con algun otro nombre.
Quiero dar las gracias a todos los que sabeis por poner vuestros trabajos para los que no tenemos ni idea vayamos aprendiendo un poquito.
Hola Caren, a que te refieres con lo de este señorazo al programa o ami, por que si es ami prefiero que me digas el señoritooo
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #11  
Antiguo 20-06-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Caren Ver Mensaje
Mi consulta es para el que ha hecho o esta haciendo este programa
He unido el hilo al tema principal, para que todo esté junto, así no nos perdemos
Responder Con Cita
  #12  
Antiguo 20-06-2013
Caren Caren is offline
Registrado
NULL
 
Registrado: may 2013
Posts: 9
Poder: 0
Caren Va por buen camino
Jose Luis espero no haberte molestado con señorazo, esperaba ser un gran halago tanto por ti como por todo lo que haces y colaboras en los foros.
Muchas gracias.
Responder Con Cita
  #13  
Antiguo 20-06-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Tranquilo me lo tome a coña y gracias a ti. Espero te sirvan los enlaces puestos
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #14  
Antiguo 21-06-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Modificaciones en el módulo UPC,



Como podéis ver hemos puesto un nuevo botón sobre un nuevo NewPanelDb, el datasource=DsPrincipal y el InverseAction=true. Este botón lo que hace es crear un nuevo registro con los datos de la Persona de contacto activa en ese momento, creando así el nuevo registro de manera automatizada.


El código añadido

Código Delphi [-]

procedure TFPC.FormActivate(Sender: TObject);
//------------------------------------------------------------------------------
//********************************************[ Cuando se activa El form ]******
// Lo que queremos que haga nuestro Form Cuando se Actiba
//------------------------------------------------------------------------------
begin
     . . .
    //Se ha añadido las siguientes lineas 
    PanelAux.ColorNotActive:=COLORPANELACT;
    PanelAux.ActiveColor:=COLORPANELNOACT;
end;

procedure TFPC.SpeedButtonBC4Click(Sender: TObject);
//------------------------------------------------------------------------------
//****************************************************[ Añadir a contactos ]****
// añadir al uses     UContactos    (Importante, para que funcione)
//------------------------------------------------------------------------------
begin
  try //Cremoas en contactos uno con los mismos datos que persona de contacto
      DSContactos.DataSet.Insert;
      DSContactos.DataSet.FieldByName('MODULO').Value:=DsPrincipal.DataSet.FieldByName('MODULO').value;
      DSContactos.DataSet.FieldByName('CODIGO').Value:=DsPrincipal.DataSet.FieldByName('CODIGO').value;
      DSContactos.DataSet.FieldByName('NOMBRE').Value:=DsPrincipal.DataSet.FieldByName('NOMBRE').value;
      DSContactos.DataSet.FieldByName('MOVIL').Value:=DsPrincipal.DataSet.FieldByName('MOVIL').value;
      DSContactos.DataSet.FieldByName('MAIL').Value:=DsPrincipal.DataSet.FieldByName('EMAIL').value;
      DSContactos.DataSet.Post;
      IBT.CommitRetaining;    //Donde IBT es el nombre de su Ibtrasaction, con ruta
      ShowMessage('Se ha creado un nuevo contacto con los datos de la persona de contacto actual');
  except
    on E: Exception do
    begin
        MessageBeep(1000);
        ShowMessage('Se ha producido un error y el proceso no se ha podido terminar   Unidad:[ UPC ]   Modulo:[ Grabar nuevo contacto]' + Chr(13) + Chr(13)
                  + 'Clase de error: ' + E.ClassName + Chr(13) + Chr(13)
                  + 'Mensaje del error:' + E.Message+Chr(13) + Chr(13)
                  + '    '+Chr(13) + Chr(13)
                  + 'El proceso ha quedado interrumpido');
        if DSContactos.DataSet.State in [dsEdit, dsInsert] then DSPrincipal.DataSet.Cancel;
        IBT.RollbackRetaining;    //Donde IBT es el nombre de su Ibtrasaction, con ruta
    end;
  end;
end;


También se detecto un error en el código de proveedores, os pongo el procedure con la corrección

Código Delphi [-]
procedure TFProveedor.CambiarPagina(index: Integer; Sender: TObject);
//------------------------------------------------------------------------------
//********************************************************[ Cambiar Página ]****
// Al pulsar los botones para acceder a las pestañas
//------------------------------------------------------------------------------
var VarBActivar:Boolean;
    VarISegundoPageControlIndex:Integer;
    VarSModulo, VarSCodigo:string;
begin
      . . .
         
     case Tipo of    

        . . .

      4:begin  //personas de contacto
           
           // Cambiar la linea ActQuery(DM.IBQContactos,'SELECT * FROM CONTACTOS WHERE (CONTACTOS.MODULO = '+QuotedStr(VarSModulo)+') AND (CONTACTOS.CODIGO = '+QuotedStr(VarSCodigo)+')');  
           //  Por

           ActQuery(DM.IBQPersonasContacto,'SELECT * FROM PC WHERE (PC.MODULO = '+QuotedStr(VarSModulo)+') AND (PC.CODIGO = '+QuotedStr(VarSCodigo)+')');
           if not DM.IBQPersonasContacto.IsEmpty then
           begin
             DBNavigator1.DataSource:=DM.DSIBQPersonasContacto;
           end else DM.IBQPersonasContacto.Active:=False;
           VarISegundoPageControlIndex:=1;
        end;
     
         . . .

    end;
end;
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #15  
Antiguo 21-07-2013
kokorski kokorski is offline
Registrado
 
Registrado: ago 2006
Posts: 5
Poder: 0
kokorski Va por buen camino
Gracias por tu esfuerzo que te aseguro seguimos muchos con interes
Responder Con Cita
  #16  
Antiguo 22-07-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Muchas gracias Kokorski, pero si quieres ayudarme haz una valoración del tutorial como solicito en post anteriores, esto me permitirá, junto con la valoración de otros compañeros, a mejorar mis puntos débiles como ya exprese en el siguiente post

Cita:
Empezado por José Luis Garcí Ver Mensaje
Si no es molestia, podrían hacerme el favor de valorar el trabajo hasta este momento, lo más sinceramente posible, el motivo, es que como siempre he dicho y he mantenido, yo no soy un experto y necesito saber cuales son mis puntos fuertes, para intentar mejorar.

Me gustaría que lo valorarais de la siguiente manera, del 1 al 10, siendo 1 la menor valoración claro, cada una de las siguientes facetas, y si se os ocurre alguna, ya sabéis.

Explicaciones
Claridad
Código
Tablas
Descripciones
Diseño
Conceptos
forma de aplicar los conceptos
y utilidad

Esto me permitirá, en cuanto al tutorial, intentar corregir y mejorarlo , si puedo y ha nivel personal, seguir aprendiendo y como no autoestima, que me la podéis hundir más o nivelar
En las empresas que he estado muchos años, siempre e hecho los programas, de hecho en algunas siguen usándolo, pero realmente no se si tengo nivel suficiente como para dedicarme a la venta de programas, al público en general, este cuestionario, sería un serio indicativo, de si es o no posible que me dedique a ello de manera esporádica.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #17  
Antiguo 22-07-2013
kokorski kokorski is offline
Registrado
 
Registrado: ago 2006
Posts: 5
Poder: 0
kokorski Va por buen camino
Cita:
Empezado por José Luis Garcí Ver Mensaje
Muchas gracias Kokorski, pero si quieres ayudarme haz una valoración del tutorial como solicito en post anteriores, esto me permitirá, junto con la valoración de otros compañeros, a mejorar mis puntos débiles como ya exprese en el siguiente post



En las empresas que he estado muchos años, siempre e hecho los programas, de hecho en algunas siguen usándolo, pero realmente no se si tengo nivel suficiente como para dedicarme a la venta de programas, al público en general, este cuestionario, sería un serio indicativo, de si es o no posible que me dedique a ello de manera esporádica.
No me cabe duda de que estas sobradamente preparado para afrontar cualquier iniciativa, y mas si es dirigida al publlico en general, nada lo demuestra mejor que este aporte que nos estas haciendo a todos de forma desinteresada. No dudes de tu capacidad y adelante con todo....

Explicaciones....... 8
Claridad ........ 8
Código ....... 7
Tablas ...... 7
Descripciones ...... 8
Diseño ........ 5 (esto es muy personal jejeje)
Conceptos ......... 9
forma de aplicar los conceptos ........ 8
y utilidad ...... dependera de cada uno

Saludos
Responder Con Cita
  #18  
Antiguo 22-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por José Luis Garcí Ver Mensaje
pero realmente no se si tengo nivel suficiente como para dedicarme a la venta de programas, al público en general, este cuestionario, sería un serio indicativo, de si es o no posible que me dedique a ello de manera esporádica.
A la venta, seguro que puedes dedicarte
Supongo que quieres decir "a crearlos para venderlos". Si es así, entonces sí que puedes, el usuario final sólo quiere que haga bien lo que tiene que hacer, que lo haga rápido y que sea fácil de hacerlo. Y si es barato, mejor
Ahora bien, si lo dices por entrar a formar parte de un equipo de programación, pienso que lo principal que tendrías que cambiar es a usar la nomenclatura que utilicen en ese sitio. En algunos sitios son más estrictos y en otros son más abiertos a que cada uno use su forma habitual.
Ya sabes, la nomenclatura, la notación para las variables, componentes, etc., la forma de escribir el código, incluso los espacios de tabulación para las sangrías del código. Pero todo eso es informarse y usarlo, nada más.
En cuanto a la estética, como siempre, te tienes que habituar a lo que usen en ese lugar, aunque también es normal que haya una persona encargada de "dar el toque" a las pantallas, así cada programador no tiene que esmerarse mucho en ese aspecto.
En general, claro que sí tienes nivel.
Si hacemos una división muy genérica de niveles, podría ser:
  • 0. Gurú
  • 1. Muy avanzado
  • 2. Avanzado
  • 3. Medio
  • 4. Aficionado
  • 5. Novato
Que cada uno se apunte al nivel que quiera
Puedes crear una encuesta y comparar según lo que contesten los demás

En cuanto a las explicaciones, es como siempre, alguien novato o aficionado puede que no lo entienda muy bien, es normal. Sin embargo, alguien medio o avanzado te entenderá perfectamente.
Responder Con Cita
  #19  
Antiguo 23-07-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Cita:
Empezado por kokorski Ver Mensaje
No me cabe duda de que estas sobradamente preparado para afrontar cualquier iniciativa, y mas si es dirigida al publlico en general, nada lo demuestra mejor que este aporte que nos estas haciendo a todos de forma desinteresada. No dudes de tu capacidad y adelante con todo....

...


Saludos
Gracias kokorski, te agradezco tanto el comentario como la valoración.

Cita:
Empezado por Casimiro Notevi Ver Mensaje
A la venta, seguro que puedes dedicarte
Supongo que quieres decir "a crearlos para venderlos". Si es así, entonces sí que puedes, el usuario final sólo quiere que haga bien lo que tiene que hacer, que lo haga rápido y que sea fácil de hacerlo. Y si es barato, mejor
Ahora bien, si lo dices por entrar a formar parte de un equipo de programación, pienso que lo principal que tendrías que cambiar es a usar la nomenclatura que utilicen en ese sitio. En algunos sitios son más estrictos y en otros son más abiertos a que cada uno use su forma habitual.
Ya sabes, la nomenclatura, la notación para las variables, componentes, etc., la forma de escribir el código, incluso los espacios de tabulación para las sangrías del código. Pero todo eso es informarse y usarlo, nada más.
En cuanto a la estética, como siempre, te tienes que habituar a lo que usen en ese lugar, aunque también es normal que haya una persona encargada de "dar el toque" a las pantallas, así cada programador no tiene que esmerarse mucho en ese aspecto.
En general, claro que sí tienes nivel.
Si hacemos una división muy genérica de niveles, podría ser:
  • 0. Gurú
  • 1. Muy avanzado
  • 2. Avanzado
  • 3. Medio
  • 4. Aficionado
  • 5. Novato
Que cada uno se apunte al nivel que quiera
Puedes crear una encuesta y comparar según lo que contesten los demás

En cuanto a las explicaciones, es como siempre, alguien novato o aficionado puede que no lo entienda muy bien, es normal. Sin embargo, alguien medio o avanzado te entenderá perfectamente.
Muchas gracias Casimiro, de todas maneras, yo considero que soy más nivel Aficionado o medio, que otro, despues de tantos años creo que no puedo considerarme novato y aunque aun me pierdo con muchos conceptos ahí estoy, dando caña para intentar entenderlos.

En cuanto a mi aportación, debo decir que la mayor parte que aporto yo son los conceptos y la aplicación (a mi forma) de ellos al programa, pero no considero que en ningún momento este descubriendo la pólvora, en cuanto al código, ya que este en su mayor parte, es de compañeros del club de libros y de otras páginas en Internet, que mio propio, lo que si he hecho yo es interpretar este y adaptarlo a mis necesidades. Lo mismo pasa con mis componentes.

Claro Casimiro que las explicaciones, dependerán de quien las lea sean más claras o no y estoy seguro de que más del 90% le interesa más el concepto que el código en si, ya que lo piensan aplicar a su propio estilo, pero también considero, que tener un punto de partida, es fundamental. Ya esto lo he contado en el club, cuando comencé con Clipper compre un libro (Que aún conservo), para iniciarte en el mundo de este lenguaje, los primeros capítulos, eran conceptos, pero de ahí en adelante era una aplicación sencilla pero completa y debo decir, que me enseño muchísimo, cosa que hasta la fecha no he visto en Delphi.

y no no es que me vaya con un equipo de programación, me refiero a que si me sale la oportunidad de hacer algún programa que me soliciten, si creis que tengo suficiente nivel como para vender al público mis programas.

En cuanto al diseño, se que debo mejorarlo, pero espero a que alguno de los maestro, escriba alguna guía o tutorial, con los conceptos y reglas a respetar, de hecho puse el tema
http://www.clubdelphi.com/foros/showthread.php?t=83663, para intentar aprender de los compañeros y aún por desgracia no ha participado nadie.

Disculparme como siempre por la verborrea, pero para todos los años que llevo en el club no participo mucho.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #20  
Antiguo 23-07-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Siguiendo con el tutorial, lo siguiente es

Código Delphi [-]
procedure TFXPAF.SBDireccionesClick(Sender: TObject);
//------------------------------------------------------------------------------
//****************************************************[ Buscar direcciones ]****
//------------------------------------------------------------------------------
begin
  if DBNCodigoCliente.Text<>'' then
  begin
    VarSTabla:='DIRECCIONES';  //Pertenece al formularios  UFbusquedaFP
    VarSNomMod:='XPAFD';  //Desde que modulo lo llamamos
    FbusquedaFP.Show;
  end else ShowMessage('Debe seleccionar primero el código del cliente');
end;

y estos son los cambios más significativos hechos en UFbusquedaFP

Código Delphi [-]

//------------------------------------------------------------------------------
//****************************************************[ Hace la búsqueda ]******
//------------------------------------------------------------------------------
begin  // Usamos por defecto locate pero lo podemos cambiar por un Query y sus cláusulas
    if comboCampos.Text<>'' then
    begin
       if VarSNomMod='XPAFD' then  //Módulo de documentos (direcciones)
       begin
            if CheckBox1.Checked then ActQuery(IBQBusqueda,'Select * From '+VarSTabla+' WHERE (DIRECCIONES.MODULO = '+ QuotedStr('CLIENTES')+
                                                           ') AND (DIRECCIONES.CODIGO = '+ QuotedStr(FXPAF.DBNCodigoCliente.Text)+
                                                           ') AND (UPPER('+comboCampos.text+ ') LIKE UPPER('+QuotedStr('%'+Edbusqueda.Text+'%')+'))')
                                 else ActQuery(IBQBusqueda,'Select * From '+VarSTabla+' WHERE (DIRECCIONES.MODULO = '+ QuotedStr('CLIENTES')+
                                                           ') AND (DIRECCIONES.CODIGO = '+ QuotedStr(FXPAF.DBNCodigoCliente.Text)+
                                                           ') AND (UPPER('+comboCampos.text+') WHERE UPPER('+QuotedStr(Edbusqueda.Text)+'))');
       end else
       begin
          if CheckBox1.Checked then ActQuery(IBQBusqueda,'Select * From '+VarSTabla+' WHERE UPPER('+comboCampos.text+') LIKE UPPER('+QuotedStr('%'+Edbusqueda.Text+'%')+')')
                               else ActQuery(IBQBusqueda,'Select * From '+VarSTabla+' WHERE UPPER('+comboCampos.text+') WHERE UPPER('+QuotedStr(Edbusqueda.Text)+')');
       end;
    end else ShowMessage('Debe seleccionar el campo por el que buscar');
end;


procedure TFbusquedaFP.FormActivate(Sender: TObject);
//------------------------------------------------------------------------------
//********************[ Cargamos los Campos de la tabla  en el ComboBox  ]******
//------------------------------------------------------------------------------
begin  //Comprobamos si el combo esta vacio cargamos los datos
  if Edbusqueda.Text='' then
  begin
     if (VarSTabla='DIRECCIONES') AND (VarSNomMod='XPAFD') then
     begin
       if VarSTabla='DIRECCIONES' then Caption:='Búsquedas en direcciones';  //Caption del Form
       ActQuery(IBQBusqueda,'Select * From '+VarSTabla+' WHERE (DIRECCIONES.MODULO = '+ QuotedStr('CLIENTES')+
                             ') AND (DIRECCIONES.CODIGO = '+ QuotedStr(FXPAF.DBNCodigoCliente.Text)+ ')');
    end else ActQuery(IBQBusqueda,'Select * From '+VarSTabla);
  end;
  if IBQBusqueda.IsEmpty then
  begin
     ShowMessage('No hay datos para buscar o mostrar');
     SB_SalirClick(Sender);
  end else
  begin
     if comboCampos.Items.Count=0 then DataSource1.DataSet.GetFieldNames(comboCampos.items);

      ...

     if VarSTabla='DIRECCIONES' then
     begin
       CarGarGrid(0,'ID',50,'ID');
       CarGarGrid(1,'CODIGO',130,'Código');
       CarGarGrid(2,'DIRECCION',520,'Dirección');
       CarGarGrid(3,'CP',65,'Dirección');
       CarGarGrid(4,'POBLACION',520,'Población');
       CarGarGrid(5,'PROVINCIA',520,'Provincía');
       CarGarGrid(6,'PAIS',520,'País');
     end;
  end;
end;


procedure TFbusquedaFP.FormClose(Sender: TObject; var Action: TCloseAction);
//------------------------------------------------------------------------------
//****************************************************************[ Cerrar ]****
//------------------------------------------------------------------------------
begin

   ...

   if (VarSNomMod='XPAFD')  and (FXPAF.DsPrincipal.DataSet.State in [dsEdit,dsInsert]) then
   begin
       DM.IBDDocumentosIDDIRECCIONES.AsInteger:=IBQBusqueda.FieldByName('ID').AsInteger; //Ponemos el código elegido
       FXPAF.Show;
   end;
   Button3Click(Sender);
   QuerryOC(IBQBusqueda);
   comboCampos.Items.Clear;
end;


procedure TFbusquedaFP.FormShow(Sender: TObject);
//------------------------------------------------------------------------------
//****************************************************************[ OnShow ]****
// Adaptamos el título del form a la tabla que usamos
//------------------------------------------------------------------------------
begin

  ...

  if (VarSTabla='DIRECCIONES') AND (VarSNomMod='XPAFD') then
  begin
    if VarSTabla='DIRECCIONES' then Caption:='Búsquedas en direcciones';  //Caption del Form
    ActQuery(IBQBusqueda,'Select * From '+VarSTabla+' WHERE (DIRECCIONES.MODULO = '+ QuotedStr('CLIENTES')+
                         ') AND (DIRECCIONES.CODIGO = '+ QuotedStr(FXPAF.DBNCodigoCliente.Text)+ ')');
                         ShowMessage(IBQBusqueda.SQL.Text);
  end;
end;

Como podéis ver al tratarse de una tabla auxiliar que va vinculada a los módulos y el código, el tratamiento es un poco diferente.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
llamar un programa desde otro programa en un computador con dos monitores RONPABLO Varios 0 10-10-2011 18:20:51
Cargar tu programa desde otro programa rmendoza83 Varios 7 05-01-2009 19:51:33
Lanzar programa desde mi programa Pablo Carlos API de Windows 32 09-09-2004 13:56:26
Ejecutar un programa externo desde un programa de Delphi Roger_Fernandez Varios 3 02-09-2004 18:05:36
ISC ERROR CODE:335544344 I/O error for file "c:\gestion\gestion.gdb" eliasterrero Firebird e Interbase 2 28-06-2004 12:20:25


La franja horaria es GMT +2. Ahora son las 16:45:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi