Vicente Ardines

Respuestas de foro creadas

Viendo 13 entradas - de la 1 a la 13 (de un total de 13)
  • Autor
    Entradas
  • en respuesta a: WTABS CON WDATATABLE POSIBLE BUG #2154
    AvatarVicente Ardines
    Participante

    dmillas creo que el problema puede estar al mostrar los tabs dentro de un Wpanel, prueba dentro de Wbevel, y define los tabs como se indica en este fichero.

    Sustituye el codigo del ejemplo de Nefele samples (formulario 6), por este, y veras que funciona correctamente. (abajo tienes unas capturas de pantalla, para verlo)

    PROCEDURE Formulario6()

    // Comenzamos instanciando la Página Web que queremos crear
    with object TWebPage():New()
    :cClrPane := "pink lighten-5"
    :aBreadCrumbs := {{GetEnv("SCRIPT_NAME"),"🏠"},{GetEnv("SCRIPT_NAME") + "?mainforms","📋"},"Máscaras"}
    AppMenu( :WO, "Formularios" )

    // Instanciamos un Panel para que sea el contenedor del formulario, permite poner un titulo y tiene un efecto sombra
    With Object WPanel():New(:WO)
    :cTitle := "FICHA DE VEHÍCULO"
    :aWidth[xc_M] := 8 // Apartir del tamaño (Tablet) solo ocupara 8/12 partes de la pantalla
    :aOffset[xc_M] := 2 // Y la centramos desplzandola 2/12 desde la izquierda

    // Instanciamos el Formulario propiamente dicho
    with object WForm():New(:WO)
    :cId := "formulario"
    :cFunction := "VisParam"

    WITH OBJECT wTabs():New( :WO )
    :cId := "tabs_captura"

    :additem("primero" , "bevel_uno")
    :additem("segundo" , "bevel_dos")
    :additem("tercero" , "bevel_tres")

    :Create()

    end with

    // Nombre y apellidos del usuario
    with object WBevel():New(:WO)
    :cId := "bevel_uno"
    :nStyle := xc_Row

    with object WEdit():New( :WO )

    // Modificamos la máscara del control
    with object :oMask
    :lUpperCase := .t. // En mayúsculas
    :lAutoComplete := .f. // Al ponerlo a .f. evita que se muestre la selección de los datos previamente introducidos
    :cPicture := "A" // Admite los caracteres indicados en cValidatorA
    end with

    :cId := "Nombre y apellidos"
    :cTitle := "Primer Apellido"
    :cIcon := "group"
    :nLength := 30

    :SetRequired()
    :Create()
    end with

    with object WEdit():New( :WO )

    with object :oMask
    :lAutoComplete := .f.
    :cPicture := "B" // Aplica en formato que hemos redefinido a cValidatorB
    end with

    :cId := "direccion"
    :cTitle := "Dirección"
    :cIcon := "store"
    :nLength := 40

    :SetRequired()
    :Create()
    end with

    with object WEdit():New(:WO)

    with object :oMask
    :cPicture := "+9{1,3} (999) 99 99 99"
    // :cPicture := "| a{1,10} |"
    :lShowMask := .f. // Si el dato está vacío, oculta la máscara
    end with

    :oStyle:cColor := "red" //Color del icono

    :cId := "telefono"
    :cTitle := "Teléfono"
    :cIcon := "phone"

    :aWidth[xc_M] := 6

    :Create()
    end with

    with object WEdit():New(:WO)

    :oMask:cPicture := "currency" // Tipo moneda
    :oMask:nDecimalPlaces := 2 // Con dos decimales
    :oMask:lMinus := .f. // Solo valores positivos

    :oStyle:cColor := "blue"

    :cValue := 10.555 //Valor inicial. Como nuestra máscara tiene solo admite 2 decimales, lo redondea automáticamente
    :nMaxValue := 300 // Valor máximo
    :nMinValue := 10 // Valor mínimo

    :cId := "importe"
    :cTitle := "Importe"
    :cIcon := "payment"

    :aWidth[xc_M] := 6 // En pantallas Tablet o superior queremos que la Fecha y la Hora compartan el ancho
    :Create()
    end with

    :Create()
    end with

    with object WBevel():New(:WO)
    :cId := "bevel_dos"
    :nStyle := xc_Row

    with object WEdit():New(:WO)

    :oMask:cPicture := "9999-AAA" // 4 números, un guión y 3 letras de tipo ValidatorA

    :cId := "Matricula"
    :cTitle := "Matrícula"
    :cIcon := "directions_car"
    :aWidth[xc_M] := 6 // En pantallas Tablet o superior queremos que la Fecha y la Hora compartan el ancho

    :Create()

    end with

    with object WEdit():New(:WO)

    :oMask:cPicture := "date" // Tipo fecha

    :cId := "Fecha"
    :cTitle := "Fecha matriculación"
    :cIcon := "date_range"

    :aWidth[xc_M] := 6

    :Create()

    end with
    with object WRadioMenu():New( :WO )
    :cId := "RMenu1"
    :cClrTitle := "blue"
    :aItems := { "UNO",;
    "DOS",;
    "TRES",;
    "CUATRO"}
    :nIndex := 1
    :lGap := .F.
    :Create()
    END with

    with OBJECT WComboBox():New(:WO)
    :cId := "mesvisita"
    :aWidth[xc_M] := 12 // En pantallas Tablet o superior queremos los dos wcombobox en la misma linea
    // Hay varias maneras de alimentar un wComboBox, en el wiki estan explicados
    :aItems := {{-1, "1er Trimestre"},{1,"Enero"},{2,"Febrero"},{3,"Marzo"},;
    {-1, "2o Trimestre"}, {4,"Abril"},{5,"Mayo"},{6,"Junio"},;
    {-1, "3er Trimestre"}, {7,"Julio"},{8,"Agosto"},{7,"Septiembre"},;
    {-1, "4o Trimestre"}, {10,"Octubre"},{11,"Noviembre"},{12,"Diciembre"}}
    :cText := "Seleccione el mes de visita"
    :cIcon := "event_available"
    :cTitle := "Mes de visita"
    :cHelp := "Este es el Mes que prefiere que le hagamos la visita periodica"
    :Create()
    end with

    with object WSeparator():New(:WO)
    :lBR := .T.
    :Create()
    end with

    :Create()

    end with
    with object WBevel():New(:WO)
    :cId := "bevel_TRES"
    :nStyle := xc_Row

    WITH OBJECT WDataTable():New(:wo)
    :cId := "Table1"
    WITH OBJECT :Configure()
    :SetColumns({"Nombre", "Puesto"})
    :data := {{"JOSE","1001"},{"ANDRES","1004"},{"MANOLO","1005"}}
    END
    :Create()

    END
    :create()
    :Create()

    end with
    with object WSeparator():New(:WO)
    :lLine := .T.
    :lBR := .T.
    :Create()
    end with

    with object WButton():New(:WO)
    :cId := "submit"
    :cText := "Aceptar"
    :lSubmit := .T.
    :lLarge := .T.
    :lCenter := .T.
    :Create()
    end with

    // Ya tenemos creados todos los controles dentro del wForm por lo que procedemos a crearlo
    :Create()

    end with

    :Create()

    end with

    oCGI:SendPage(:Create())

    end with

    RETURN

    Loading spinner
    Adjuntos:
    Debes acceder para ver los archivos adjuntos.
    en respuesta a: Base de Datos a WCombobox #2151
    AvatarVicente Ardines
    Participante

    Muchísimas gracias Gabriel, ahora ya me funciona correctamente, mi error era cargar el array con QueryArrayHash(), en vez de QueryArray().

    Gracias por tu ayuda.

     

    Loading spinner
    en respuesta a: VERSION SAMPLES 1.4 o 1.3 #2021
    AvatarVicente Ardines
    Participante

    Perdona, tienes razón, yo he logrado hacerlo funcionar, pero compilando los nuevos samples, con la librería anterior.

    Con esta ultima librería, efectivamente, da el error que tu señalas.

    Disculpa por aportar, antes de comprobar.

    Loading spinner
    en respuesta a: VERSION SAMPLES 1.4 o 1.3 #2016
    AvatarVicente Ardines
    Participante

    prueba a activar  estas lineas en : maindatatables.prg

    /*

    AAdd( :aHeadScript, '<script src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script>')
    AAdd( :aHeadLinks, '<link rel="stylesheet" href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.css" />')
    AAdd( :aHeadScript, '<script src="https://cdn.datatables.net/rowreorder/1.2.7/js/dataTables.rowReorder.min.js"></script>')
    AAdd( :aHeadLinks, '<link rel="stylesheet" href="https://cdn.datatables.net/rowreorder/1.2.7/css/rowReorder.dataTables.min.css" />')
    :AddHTML( '<table id="browse"></table>' )
    AAdd( :aScript, DataScript() )

    */

    Loading spinner
    en respuesta a: VERSION SAMPLES 1.4 o 1.3 #2017
    AvatarVicente Ardines
    Participante

    descomenta las lineas del MainDatatables.prg, que hacen referencia a los cdn.datatables.net

    Loading spinner
    en respuesta a: Consultas Varias #2013
    AvatarVicente Ardines
    Participante

    Muchísimas gracias por tu rápida respuesta, sabiendo que se puede hacer y mas o menos como, me pongo manos a la obra 😉

    Loading spinner
    en respuesta a: ABREVIATURAS #1997
    AvatarVicente Ardines
    Participante
    en respuesta a: Cambiar el valor de un WLabel no puedo lograrlo #1999
    AvatarVicente Ardines
    Participante

    Wlabel():cText:= "Bienvenido a Tokens Samples"   //  te va a devolver siempre ese valor en el texto del label

    //----------------------------------------------------------------------------------------

    manejándolo así , y cargando ahí el token de tu función????

    LOCAL cTexto_a_mostrar := "Bienvenido a Tokens Samples"

    Wlabel():cText:=cTexto_a_mostrar

    //-------------------------------------------------

    cTexto_a_mostrar := Token

     

    Loading spinner
    en respuesta a: ABREVIATURAS #1998
    AvatarVicente Ardines
    Participante

    No se si esto te pueda servir.

    Autocompletado de controles Néfele

    Contenido no disponible.
    Por favor, acepta las cookies haciendo clic en este aviso

    Loading spinner
    AvatarVicente Ardines
    Participante

    Muestra este error al intentar abrir cualquiera de los ejemplos de DataTables

    Loading spinner
    Adjuntos:
    Debes acceder para ver los archivos adjuntos.
    en respuesta a: CRUD 100% FUNCIONAL con Datatable #1989
    AvatarVicente Ardines
    Participante

    Gracias a vosotros por todo vuestro trabajo, los ejemplos, los comentarios en el foro tanto vuestros como de los demás integrantes de esta comunidad, gracias a ellos también, para mi ha sido clave para poder empezar a hacer cosas en la web, que antes se me hacían imposibles , con esta herramienta se vuelve muy sencillo, me queda muchísimo por aprender , y estoy satisfecho de poder aportar mi granito de arena en agradecimiento por todo lo recibido.

    Para mi es todo un honor que contéis con esta pequeña aportación para incluirla en la próxima versión del samples. Gracias de corazón.

    Loading spinner
    en respuesta a: Ejemplo CRUD, MariaDB , Altas y Modificaciones #1967
    AvatarVicente Ardines
    Participante

    Al final me he puesto, y ha sido mucho mas fácil de lo que pensaba, incluso me he divertido con la facilidad y rapidez que lo he podido realizar, esta hecho a puñetazos, pero funciona todo.

    ALTAS, BAJAS, MODIFICACIONES, CONSULTAS, PAGINACIÓN.

    Estoy muy satisfecho de como funciona esta herramienta, 100% recomendable.

    Loading spinner
    Adjuntos:
    Debes acceder para ver los archivos adjuntos.
    en respuesta a: Ejemplo CRUD, MariaDB , Altas y Modificaciones #1966
    AvatarVicente Ardines
    Participante

    Hola , sigo con el hilo.

    Logro conectarme correctamente a la base de datos , puedo ver registros , incluso borrarlos, y desde la aplicación xailer actualizar sin problema, pero desde la web no soy capaz de actualizar datos.

    Uso este código como ejemplo para intentar modificar un dato manualmente, pero no consigo nada. No se si el error esta en la sentencia SQL, que este mal construida ?????, porque no me envía ningún tipo de error . (sin embargo para borrar ..... csQL := [DELETE FROM ]+cTable+[ WHERE id=]+pid ) funciona correctamente ?????

    function DataEditRowClu(pid)

    local cTable, csQL
    local oError
    local hResponse := {=>}
    local lNew := .F.

    hResponse := {=>}
    cTable := 'clubes'

    // 1) Actualizar los datos del Club
    // csQL := [UPDATE ]+cTable+[ SET entidad = "NOMBRE ENTIDAD" WHERE id=]+pid
    csQL := [UPDATE ]+cTable+[ SET entidad = 'NOMBRE ENTIDAD' WHERE id=]+nfl_ValToSql(pid)
    nfl_Console("Actualizando datos del ID :"+pid) //Solo lo veras si tienes en marcha Nefele Console

    // 2) Añadir o actualizar registro
    TRY
    WITH OBJECT _DbSqlConnex()
    :Execute( csQL)
    :End()
    END
    hResponse['error'] := .F.
    hResponse['message'] := "Registro "+ IF( lNew, "Insertado", "Modificado" )

    CATCH oError
    hResponse['error'] := .T.
    hResponse['message'] := oError:Description
    END

    // 3) Devolver respuesta hash con el resultado de la operacion

    hResponse['error'] := .T.
    hResponse['message'] := "response"

    return hResponse

    Loading spinner
Viendo 13 entradas - de la 1 a la 13 (de un total de 13)

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para «permitir cookies» y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar» estarás dando tu consentimiento a esto.

Cerrar