Lunes 18 de Noviembre de 2024, 01:43
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Visual FoxPro
(Moderador:
arielb
) »
Scroll Con Form Y Campo Unico
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Scroll Con Form Y Campo Unico (Leído 2771 veces)
Widark
Miembro MUY activo
Mensajes: 246
Scroll Con Form Y Campo Unico
«
en:
Jueves 6 de Octubre de 2005, 17:57 »
0
Hola como estan?
Tengo 2 problemas:
1. Cargo unos controles en el form de forma vertical, el formulario tiene un tamaño fijo. Tengo unos botones de edicion y cuando bajen con el scroll del form estos controles de edicion se deben mantener visibles.
2. Cargo en tiempo de ejecucion una tabla, tiene un campo unico, hize la prueba repitiendo un dato para que me apareciera el error y al momento de guardar no sale nada todo pasa normal, el error me aparece luego cuando me desplazo o cierro el formulario no se que pueda ser. El codigo que uso para abrir la tabla es el siguiente:
Código: Text
SET MULTILOCKS ON
SELECT 0
USE FULLPATH(CURDIR()) + ALLTRIM(Carpeta) + "\" + TablaCampos
loSuccess = CURSORSETPROP("Buffering",5)
Muchas gracias por la atencion prestada.
Tweet
[:], Yo si se lo que es trabajar duro, por que lo he visto.
http]
programacion
,
c
,
c++
,
C#
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
allegro
,
asm
,
codigo
NoSolocodigo
--> Blog de Articulos
arielb
Moderador
Mensajes: 771
Nacionalidad:
Re: Scroll Con Form Y Campo Unico
«
Respuesta #1 en:
Martes 11 de Octubre de 2005, 00:10 »
0
k tal widark tiempo sin estar por aki, bueno tal ves si pones el error se nos hará mas facil ayudarte y ver en que puede ser ese problema.
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16
http://coder-pa.blogspot.com
Widark
Miembro MUY activo
Mensajes: 246
Re: Scroll Con Form Y Campo Unico
«
Respuesta #2 en:
Martes 11 de Octubre de 2005, 16:51 »
0
Que tal Juez, encantado de saludarte de nuevo
!
Resulta que no hay error, y ese es el problema, cree un campo unico en una "Free Table" y cuando repito el dato en ese campo y lo guardo no pasa nada, no hay error de indice repetido ni algo parecido, el error aparece cuando me muevo adelante o atrás y lo mas raro es que en otro formulario (con otra tabla) lo hago igual y si se genera el error de indice duplicado.
[:], Yo si se lo que es trabajar duro, por que lo he visto.
http]
programacion
,
c
,
c++
,
C#
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
allegro
,
asm
,
codigo
NoSolocodigo
--> Blog de Articulos
arielb
Moderador
Mensajes: 771
Nacionalidad:
Re: Scroll Con Form Y Campo Unico
«
Respuesta #3 en:
Martes 11 de Octubre de 2005, 17:52 »
0
igualmente widark, vamos a agregarle una linea mas al codigo que colocaste y modificarle la última para que pruebes.
Código: Text
SET MULTILOCKS ON
SELECT 0
USE FULLPATH(CURDIR()) + ALLTRIM(Carpeta) + "\" + TablaCampos
vTabla = alias ()
loSuccess = CURSORSETPROP("Buffering",5, vTabla)
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16
http://coder-pa.blogspot.com
Widark
Miembro MUY activo
Mensajes: 246
Re: Scroll Con Form Y Campo Unico
«
Respuesta #4 en:
Martes 11 de Octubre de 2005, 23:01 »
0
Gracias Juez Funciono una parte, ahora si me avisa que el indice se esta duplicando pero cuando cancelo la accion o trato de guardar aparece el mensaje que la tabla debe tener buffer de registro o tabla. ¡HELP!
[:], Yo si se lo que es trabajar duro, por que lo he visto.
http]
programacion
,
c
,
c++
,
C#
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
allegro
,
asm
,
codigo
NoSolocodigo
--> Blog de Articulos
arielb
Moderador
Mensajes: 771
Nacionalidad:
Re: Scroll Con Form Y Campo Unico
«
Respuesta #5 en:
Miércoles 12 de Octubre de 2005, 16:33 »
0
ok widark podes poner el codigo aki que usas al momento de cancelar o guardar?
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16
http://coder-pa.blogspot.com
Widark
Miembro MUY activo
Mensajes: 246
Re: Scroll Con Form Y Campo Unico
«
Respuesta #6 en:
Miércoles 12 de Octubre de 2005, 21:17 »
0
Claro, y solo por hoy pondré el código con que cargo el formulario, solo es oferta
:
Este codigo va en un metodo que cree para el formulario CargaControles:
Código: Text
PARAMETERS Carpeta as String, TablaCampos as String, TablaDigitacion as String
Public loErr AS Exception
Local loSuccess as Boolean, loTop as Integer
LOCAL loObjeto as String, loOrigenDatos as String, loControl as String, loPrefijo as String &&Prefijo del nombre del Control
LOCAL loTablaAbierta as String &&La tabla que se abrira para el combo
Try
SET MULTILOCKS ON
USE FULLPATH(CURDIR()) + ALLTRIM(Carpeta) + "\" + TablaCampos IN 0
loSuccess = CURSORSETPROP("Buffering",5,TablaCampos)
IF loSuccess = .T.
MESSAGEBOX("Se ha conectado a la Tabla " + TablaCampos + " con exito.",64,"Enlace a Datos")
SET ORDER TO Posicion
COPY TO Array loCamposFijos FIELDS nomcampo,etiqueta,tipcontrol,relacion,requerido FOR Aparece = .T.
EndIf
loSuccess = .F.
USE FULLPATH(CURDIR()) + ALLTRIM(Carpeta) + "\" + TablaDigitacion IN 0
loSuccess = CURSORSETPROP("Buffering",5)
IF loSuccess = .T.
MESSAGEBOX("Se ha conectado a la Tabla " + TablaDigitacion + " con exito.",64,"Enlace a Datos")
SELECT 2
loTop = 38
FOR I = 1 TO ALEN(loCamposFijos,1)
WAIT WINDOW "Creando los campos para la digitación." NoWait
AdicionControles(ThisForm, 'lbl' + ALLTRIM(loCamposFijos(I,1)), "Label", loTop, 5,;
FSIZE(ALLTRIM(loCamposFijos(I,1))) + 3, ALLTRIM(loCamposFijos(I,2)))
IF loCamposFijos(I,3) = "Normal"
IF TYPE(FIELD(ALLTRIM(loCamposFijos(I,1)))) = "L"
loControl = "CheckBox"
loPrefijo = "chk"
ELSE
IF FSIZE(ALLTRIM(loCamposFijos(I,1))) < 49
loControl = "TextBox"
loPrefijo = "txt"
ELSE
loControl = "EditBox"
loPrefijo = "edt"
EndIf
EndIf
ELSE
loControl = "ComboBox"
loPrefijo = "cmb"
EndIf
loObjeto = loPrefijo + ALLTRIM(loCamposFijos(I,1))
loOrigenDatos = '"' + TablaDigitacion + "." + ALLTRIM(loCamposFijos(I,1)) + '"'
AdicionControles(ThisForm, loObjeto, loControl, loTop, 99,;
FSIZE(ALLTRIM(loCamposFijos(I,1))) + 3, "")
ThisForm.&loObjeto..ControlSource = &loOrigenDatos
ThisForm.&loObjeto..Tag = IIF(loCamposFijos(I,5) = .F.,"N","S")
IF loControl = "ComboBox"
loTablaAbierta = ALLTRIM(loCamposFijos(I,4))
IF NOT USED(loTablaAbierta)
USE FULLPATH(CURDIR()) + "Globales\" + loTablaAbierta IN 0
EndIf
loOrigenDatos = loTablaAbierta + ".descripcio,codigo"
ThisForm.&loObjeto..ColumnWidths = "190,50"
ThisForm.&loObjeto..BoundColumn = 2
ThisForm.&loObjeto..ColumnCount = 2
ThisForm.&loObjeto..FirstElement = 1
ThisForm.&loObjeto..RowSourceType = 6
ThisForm.&loObjeto..RowSource = loOrigenDatos
EndIf
loTop = loTop + ThisForm.&loObjeto..Height + 5
Next
ThisForm.txtColor1.ControlSource = "Daniel.color"
EndIf
SELECT &TablaDigitacion
EstadoControles(ThisForm, .F.)
Desplazamiento (ThisForm, 92)
Catch To loErr
MESSAGEBOX(loErr.Message,48,"Error")
EndTry
Este es con el que guardo:
Código: Text
Local strClase as String, intCo as Integer, loErr as Exception
Try
FOR intCo = 1 TO ThisForm.ControlCount
IF INLIST(ThisForm.Controls(intCo).BaseClass,"Textbox","Editbox","Combobox")
IF ThisForm.Controls(intCo).Tag = "S" AND ALLTRIM(ThisForm.Controls(intCo).Value) = ""
Messagebox("Debe llenar " + ThisForm.Controls(intCo - 1).Caption + " para guardar.",48,"Faltan Datos")
Cancel
EndIf
ELSE
IF ThisForm.Controls(intCo).BaseClass = "Checkbox"
IF ThisForm.Controls(intCo).Tag = "S" AND ThisForm.Controls(intCo).Value = .F.
Messagebox("Debe llenar " + ThisForm.Controls(intCo - 1).Caption + " para guardar.",48,"Faltan Datos")
Cancel
EndIf
EndIf
EndIf
Next
TABLEUPDATE()
IF BAdicion
GO BOTTOM
EndIf
BAdicion = .F.
BEdicion = .F.
Desplazamiento (ThisForm, 92)
EstadoControles(ThisForm, .F.)
BotonesEdicion (ThisForm, .T.)
Catch To loErr
IF loErr.ErrorNo = 1884
Messagebox("Este registro esta Repetido.",16,"Dato Repetido")
ThisForm.txtPosicion.value = mAnterior
ELSE
Messagebox(loErr.Message,48,"Error")
EndIf
Finally
ThisForm.Refresh()
EndTry
y este es el de cancelar:
Código: Text
TABLEREVERT()
IF Bmk <> 0
GO Bmk
EndIf
BAdicion = .F.
BEdicion = .F.
Desplazamiento (ThisForm, 92)
EstadoControles(ThisForm, .F.)
BotonesEdicion (ThisForm, .T.)
ThisForm.Refresh()
Muchas gracias por tu atención.
[:], Yo si se lo que es trabajar duro, por que lo he visto.
http]
programacion
,
c
,
c++
,
C#
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
allegro
,
asm
,
codigo
NoSolocodigo
--> Blog de Articulos
arielb
Moderador
Mensajes: 771
Nacionalidad:
Re: Scroll Con Form Y Campo Unico
«
Respuesta #7 en:
Viernes 14 de Octubre de 2005, 16:59 »
0
ok que te parece si le decimos al programa que se un poco mas especifico al decirte los errores para entenderlo un poco mas
En el prg inicial (main) coloca esta linea
Código: Text
ON ERROR DO fallos WITH ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )
y te creas un prg con el nombre fallos y le colocas estas lineas
Código: Text
DO CASE
CASE meRror=39
WAIT WINDOW 'Error en la linea : ' + UPPER(meSs1) + CHR(13) +;
'Encontrado en : ' + UPPER(mprog) + CHR(13) +;
'Archivo : ' + ALIAS() + CHR(13) +;
'Nota : Existen caracteres como "***.**"' AT 1,1 NOWAIT
OTHERWISE
j = MESSAGEBOX("El sistema causó el siguiente error :" + CHR(13) +;
"Número :" + PADR(ALLTRIM(STR(meRror)),40) + CHR(13) +;
"Tipo :" + PADR(meSs,40) + CHR(13) +;
"Código :" + PADR(mess1,40) + CHR(13) +;
"Línea :" + PADR(ALLTRIM(STR(mlIneno)),40) + CHR(13) +;
"Método :" + PADR(mpRog,40),64,"")
ENDCASE
Luego ejecutas el pograma desde el prg inicio y realizas lo que te está dando problema.
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16
http://coder-pa.blogspot.com
Widark
Miembro MUY activo
Mensajes: 246
Re: Scroll Con Form Y Campo Unico
«
Respuesta #8 en:
Viernes 14 de Octubre de 2005, 18:13 »
0
Que tal Juez!
gracias por tu respuesta, ese modulo ya lo tenia, y si me saca el error que el indice esta repetido (en realidad dice que ha sido violado) en realidad lo que yo quiero es que antes de guardar me diga que ya esta repetido, en otro formulario tengo casi lo mismo, y cuando llega a la linea TABLEUPDATE() Try intercepta el error y ahí pongo mi mensage, pero en este espera hasta que se mueva, ya no se que hacer...
[:], Yo si se lo que es trabajar duro, por que lo he visto.
http]
programacion
,
c
,
c++
,
C#
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
allegro
,
asm
,
codigo
NoSolocodigo
--> Blog de Articulos
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Visual FoxPro
(Moderador:
arielb
) »
Scroll Con Form Y Campo Unico