Foros Néfele 4 Harbour › Foros › Dudas › abc en un form
Etiquetado: Dudas
- Este debate tiene 2 respuestas, 2 mensajes y ha sido actualizado por última vez el 4 años por Alfredo Sanz. This post has been viewed 705 times
-
AutorEntradas
-
-
17-10-2020 a las 21:54 #1274Vicente MurilloParticipante
Ya tengo un WArrayBrowse que está pintando los datos de manera correcta, quiero agregar y/o modificar registros donde en caso de un registro nuevo(alta), tengo que validar la clave que estoy capturando en ese momento no exista para continuar con la captura; en caso de que sea actualizar el registro(cambio), solo pintar la clave del usuario y poder modificar los demás datos, vi algunos ejemplos con Ajax pero creo el procedure "VISPARAM" está hecho como para varias opciones y no le entendí, ¿ de que manera puedo validar los datos que estoy usando?, ¿ solo por ajax o puedo usar algo adicional ?.
Muchas gracias por su atención.
Adjuntos:
Debes acceder para ver los archivos adjuntos. -
17-10-2020 a las 22:01 #1276Vicente MurilloParticipante
Agrego pantalla donde puse un botón para alta y para cambios uso
Este es botón de alta
1234567891011With Object WButton():New( :Wo ):aWidth[xc_S] := 12 // este va a ocupar 6/12 en movil y tablet:cText := "Nuevo"+CRLF*:lBack := .t. //Al pulsar el botón, retrocede a la página que ha llamado a la actual:cIcon := "add" // Icono a mostrar ver lista en https://materializecss.com/icons.html:lLarge := .t. // Grande:lbold := .t. //negritas:lcenter := .f. //centrado:cClrPane := "indigo darken-1"//"light-green":aParams := {"1"}:cOnClick := "tUsMov" // En caso de picar en un elemento del ArrayBrowseen el browse uso el cambio
1234567891011121314WITH OBJECT WArrayBrowse():New(:WO):cId := "tUsuarios" // Id que le damos al ArrayBrowse*:nStyle := xc_Striped // Estilo visual, con pautado pijama:nStyle := xc_Highlight //Se ilumina la linea al ponerse sobre ella*:cClrHeadPane := "red lighten-4" // Le damos color a las cabeceras:cClrHeadPane := "light-green" // "lime lighten-5"// Le damos color a las cabeceras y pies:cOnClick := "tUsMov" // En caso de picar en un elemento del ArrayBrowse*:aFooter := {"Final Nombre","Final Puesto","Final Nivel"}:cCursor := "pointer"//cursor al colocar el ratón, sólo si hay onclick:cTextNoData := "No hay datos"//Texto que aparece cuando el aItems esta vació*:lResponsive := .t. //Habilita la tabla como resposive para los móviles:nFontSizeHead := 6 //Tamaño de la Fuente de la Cabecera y el Pie según Materialize:aParams := {"2"}en la funcion tUsMov() tengo este edit
123456789101112131415161718with object WForm():New(:WO):cId := "fUsuarios":cFunction := "VisParam"with object WEdit():New(:WO):cId := "cliente":nTimeOut := 1 //no lo conozco:cAjaxTimeOut := "DatosClte"//:cAjaxTimeOut := "DatosUsuario" //donde traemos los datos en caso de clave repetida:cTitle := "Clave del usuario":cHint := "":cIcon := "verified_user":oMask:lUpperCase := .T. //mayúsculas envío:cHelp := "Hasta 15 caracteres;":nLength := 15:SetRequired():Create()end with- Esta respuesta fue modificada 4 años por Alfredo Sanz.
Adjuntos:
Debes acceder para ver los archivos adjuntos. -
18-10-2020 a las 13:13 #1279Alfredo SanzSuperadministrador
Tal y como lo tienes, cuando metas un dato en el wEdit "cliente", pasado 1 segundo sin modificar el dato, ejecutará tu función "DatosClte" por Ajax.
En esta función es en la que tienes que verificar si el dato introducido existe o no y devolver la acción correspondiente.
Fíjate en el ejemplo 5 de los formularios de https://samples.nefele.dev/ejemplo
Puedes hacer, por ejemlo:
- Si el código existe, rellenas los campos que faltan.
- Si el código no existe, muestras un alert que diga que el código no se ha encontradoContenido no disponible.
Por favor, acepta las cookies haciendo clic en este avisoCon esto conseguimos que nos verifique si existe o no el código antes de pulsar el botón aceptar.
Luego, cambiarás la función "Visparam" ( que se ejecuta cuando pulsas acertar) por tu propia función, en la que guardarás los datos, etc...
123456789101112131415161718with object WForm():New(:WO):cId := "formulario":cFunction := "VisParam"with object WEdit():New(:WO):nTimeOut := 1:cAjaxTimeOut := "DatosClte":cId := "cliente":cTitle := "Código Clte":cHint := "":cIcon := "person"/* Estas propiedades estaran disponibles en la próxima actualización de Néfele:lShadowSheet := .T.::cShadowSheetTitle := "Buscando información de cliente"::cShadowSheetSubTitle := "Un Momento ..."*/:SetRequired():Create()end withy en DatosClte
12345678910111213141516171819202122232425262728293031323334353637383940414243PROCEDURE DatosClte()LOCAL cDato := oCGI:GetCgiValue("key","")LOCAL aClientes := {{"123","Alfredo","Sanz","Pérez"},;{"456","Pedro","Amaro","Perdomo"},;{"789","Fernando","Martín","Regalde"}}LOCAL nIdx := HB_Ascan(aClientes,{|x| x[1]==cDato})LOCAL cHtmlif nIdx > 0cHtml := UpdateValues( aClientes[nIdx,2], aClientes[nIdx,3], aClientes[nIdx,4] )ELSEcHtml := UpdateValues( "", "", "" )IF Val(cDato) > 0WITH OBJECT WMsgAlert():New():cText := "Dato no encontrado":cType := "error":lModal := .T.:Create()cHtml += :fullhtml()ENDELSEIF !Empty(cDato)cHtml := nfl_Tag("script","window.location.href='https://www.google.es/search?q="+cDato+"'")ENDIFENDIFoCGI:SendScript( cHtml )RETURN//------------------------------------------------------------------------------FUNCTION UpdateValues( cNombre, cApellido1, cApellido2 )LOCAL cSalidatext into cSalidadocument.getElementById('nombre').value='[[nombre]]';document.getElementById('apellido1').value='[[apellido1]]';document.getElementById('apellido2').value='[[apellido2]]'endtextcSalida := StrTran(cSalida, "[[nombre]]", cNombre)cSalida := StrTran(cSalida, "[[apellido1]]", cApellido1)cSalida := StrTran(cSalida, "[[apellido2]]", cApellido2)RETURN cSalida
-
-
AutorEntradas
- Debes estar registrado para responder a este debate.