Announcement

Collapse
No announcement yet.

Generacion de numero de ticket y reinicio

Collapse
This topic is closed.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Generacion de numero de ticket y reinicio

    Buenos dias, necesito su ayuda
    POr favor guienme o ayudenme, estoy haciendo un sistema que genere un numero de ticket para un cliente para ser atendido; ademas este numero de ticket debe reiniciar cada dia, para empezar de nuevo un nuevo dia.
    No se si generar este numero incrementable en el form o en pdf????
    lo que veo mas complejo es la accion de reiniciar este numero cada dia.
    Gracias por cualquier ayuda

  • #2
    yo pienso que debes de tener una tabla con un campo tipo numerico para el consecutivo y otro campo tipo datetime para la guardar fechahora del ultimo numero generado.
    o sea que cada vez que generes un consecutivo, actualices la fechahora de generacion.

    y tiene que crear una funcion que va a retornar el numero siguiente y a su vez actualiza la tabla con el nuevo numero y la fechahora. y en esta funcion evaluas la fecha actual con now() versus la fecha del ultimo consecutivo. si es otro dia, actualizas el consecutivo a cero.
    y isto

    Comment


    • #3
      Gracias por la respuesta alvagar, si te entiendo la idea, lo que pasa es que se muy poco de programacion y no entiendo muy bien como organizar estos datos que me das en el scriptcase, si me ayudaras ejemplificando o dandome un codigo concreto para colocar en el scriptcase.
      gracias de antemano por la paciencia y ayuda ofrecida y la que me puedas brindar

      Comment


      • #4
        que base de datos estas usando?

        Comment


        • #5
          Estoy usando mysql

          Comment


          • #6
            con mysql administrator:
            --creas una tabla asi:

            create table consecutivo (codigo int not null, NUMEROACTUAL int not null,
            ULTIMAFECHA date not null, primary key (codigo)) engine = InnoDB;
            -- insertas un registro inicial
            insert into consecutivo values (1, 0, sysdate());

            -- Luego creas esta funcion:
            DELIMITER $$
            DROP FUNCTION IF EXISTS `f_get_consecutivo` $$
            CREATE FUNCTION `f_get_consecutivo` () returns int
            BEGIN

            DECLARE v_CONSECUTIVO INT(8);
            DECLARE V_FECHA DATE;

            SELECT NUMEROACTUAL, ULTIMAFECHA
            INTO v_CONSECUTIVO, V_FECHA
            FROM consecutivo;

            set v_CONSECUTIVO = v_CONSECUTIVO + 1;

            IF (DAY(V_FECHA) <> DAY(NOW())) THEN
            set V_FECHA = now();
            set v_CONSECUTIVO = 1;
            END IF;

            update consecutivo set NUMEROACTUAL = v_CONSECUTIVO, ULTIMAFECHA = V_FECHA where codigo = 1;

            return v_CONSECUTIVO;
            END $$
            DELIMITER ;

            --- y llamas esta funcion en el evento onvalidate asi:

            sc_lookup(dataset, "select f_get_consecutivo()" );

            $consecutivo = {dataset[0][0]};

            Comment


            • #7
              hombre gracias por la dedicacion de verdad; te comento:
              -Para crear la tabla con el codigo que dices me toco investigar y habilitar el innoDB en mySQL, luego que lo habilite funciono el primer codigo y creó la tabla
              -Use el segundo codigo para cargar un registro inicial, hasta ahi bien, o cargo con los datos, todo bien
              -PERO, el problema lo tengo con el tercer codigo para crear la funcion; asumo que ese codigo tambien lo coloco en el mysql, pues cuando lo voy a generar me da un error de sintaxis diciendo que revise el manual de version de mi mysql, el mensaje es este:

              MySQL ha dicho:

              #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$
              DROP FUNCTION IF EXISTS `f_get_consecutivo` $$
              CREATE FUNCTION `f' at line 1
              No se si es algun caso de diferencia de versiones, por si acaso te mensiono la version que manejo:

              El servidor Web Apache Versión 2.2.8
              Script PHP Language Version 5.2.6
              MySQL Database Versión 5.0.51b
              phpMyAdmin Database Administrador Version 2.10.3

              Gracias de antemano.

              Comment


              • #8
                Debes correrlo con mysql administator y con la herramienta mysql query browser, alli seleccionas FILE - NEW SCRIPT TAB. y corres la funcion.
                o Busca en google como corre una funcion en mysql

                Comment


                • #9
                  Bueno amigo, ya hice todo, descargue, instale mysql administrator y query browser, y ejecute los codigos que dijiste, todo bien, peeero;
                  tengo una gran duda:
                  todo eso del codigo y y la tabla que se creó (consecutivo), realmente ¿como las aplico en scriptcase?, en principio pense en crear un form de la tabla consecutivo y probar, pero no se si deba cambiar alguna propiedad de los campos (por ejemplo colocar autoincrementable el campo codigo),
                  ¿o acaso esa tabla y esa funcion se creo para ser llamada desde cualquier otra tabla?, y si es asi podria entonces aplicarla en un form de otra tabla, pero ¿tendria que llamar el campo numero actual?
                  De verdad Disculpa mi ignorancia con el tema, entiendo la paciencia y dedicacion de tu parte alvagar.
                  Gracias de antemano

                  Comment


                  • #10
                    Se creó una tabla y una función. La tabla es para tener el registro del numero actual en que va el ticket y la fecha en que se generó ese ultimo numero.
                    La funcion permite retornar el nuevo numero del ticket y esta se debe de llamar desde SC en el formulario que tu tienes para generar los tickets.

                    Si no lo tienes creas un control y desde alli llamas la funcion con este codigo:

                    --- y llamas esta funcion en el evento onvalidate asi:
                    sc_lookup(dataset, "select f_get_consecutivo()" );
                    $consecutivo = {dataset[0][0]};

                    En este caso la variable $consecutivo almacena el valor del nuevo consecutivo del ticket y lo puedes mostrar asignando esta variable a un campo que tu tengas del control.

                    Por ejmplo:
                    {campo_consec} = $consecutivo;

                    Comment


                    • #11
                      control SC

                      si no puedes dame tu email yo te mando un control .

                      Comment


                      • #12
                        Hola, Siento que estoy cerca de lograrlo, pero no quisiera incomadar con tanta pregunta; lamentablemente aun no logro el resultado,
                        Si mal no entiendo, yo al cargar el codigo que mencionas en el on validate de sc, estoy llamando la funcion que se creo en el mysql,
                        yo tengo un form con unos datos (entre ellos el campo numero de ticket de tipo int, sin ninguna caracteristica de autoincremento ni nada); en este form en el on_validate coloco el codigo que dices, pero en este form no veo donde o como asignar la variable a mi campo ticket;
                        yo lo unico que pense fue en hacer esa asignacion en el mismo onvalidate, abajo del codigo, dejandolo asi:
                        sc_lookup(dataset, "select f_get_consecutivo()" );
                        $consecutivo = {dataset[0][0]};
                        {ticket} = $consecutivo;

                        bien, pues haciendo esto, lo que resulta es que me esta colocando en el campo ticket el numero 2, no importa cuantos registros cree, siempre coloca "2" en el campo ticket.

                        Comment


                        • #13
                          Usa un CONTROL como te dije para eso, y vera que funciona, yo lo hice y me funciono correctamente.

                          Comment


                          • #14
                            mi email es ivanpiero85@hotmail.com

                            Comment


                            • #15
                              Todo Solucionado satisfactoriamente, Muy agradecido con nuestro amigo alvagar que me tuvo tanta paciencia y me presto tan dedicada ayuda paso a paso con codigo y todo, todo resulto como el menciono a traves de este post, tal cual con el codigo y todo.
                              excelente

                              Comment

                              Working...
                              X