PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Simplificar codigo
Simplificar codigo
Débuté par Manuel, 21 avr. 2009 11:23 - 6 réponses
Posté le 21 avril 2009 - 11:23
este codigo funciona bien pero alguien sabe como simplificarlo ?


HReadFirst(Factd)
WHILE HFound()
HDelete()
HReadNext()
END
HReadFirst(f02fox)
WHILE NOT HOut(f02fox)
Factd.FACTURA = f02fox.FACTURA
Factd.ORDEN = f02fox.ORDEN
Factd.CODIGO1 = f02fox.CODIGO1
Factd.NOMBRE = f02fox.NOMBRE
Factd.FECHA = f02fox.FECHA
Factd.ALM = f02fox.ALM
Factd.CIA = f02fox.CIA
Factd.C1 = f02fox.C1
Factd.C2 = f02fox.C2
Factd.C3 = f02fox.C3
Factd.C4 = f02fox.C4
Factd.C5 = f02fox.C5
Factd.C6 = f02fox.C6
Factd.C7 = f02fox.C7
Factd.C8 = f02fox.C8
Factd.C9 = f02fox.C9
Factd.C10 = f02fox.C10
Factd.C11 = f02fox.C11
Factd.C12 = f02fox.C12
Factd.C13 = f02fox.C13
Factd.C14 = f02fox.C14
Factd.C15 = f02fox.C15
Factd.C16 = f02fox.C16
Factd.C17 = f02fox.C17
Factd.C18 = f02fox.C18
Factd.FECHAO = f02fox.FECHAO
HReadNext(f02fox)
HAdd(Factd)
END

Gracias

Manuel
Posté le 21 avril 2009 - 14:37
Has probado la función HCopyRecord, creo que si las dos tablas son iguales podría funcionar.
Un Saludo.
Posté le 21 avril 2009 - 16:19
Hola manuel,
La forma que estas haciendolo es la correcta, podrias hacelera un poco el proceso usando una consulta SQL para el borrado
rs is Data Source
HExecuteSQLQuery(rs,hQueryDefault,"DELETE FROM TABLA")

La instrucción HCopyRecord() es parecida a las que estas usando tendrias que repetirla para cada campo.

Saludos
Salvador
Posté le 21 avril 2009 - 18:17
Perfecto !!!

Gracias a Todos

Manuel
Posté le 23 avril 2009 - 09:40
Hola Manuel, usa HCopyRecord, te iguala todos los campos llamados iguales, hDefaultval hace que los campos que no existan en el archivo origen sean remplazados por el valor definido en al análisis para el archivo destino.
Antes de hacer el HAdd se pueden modificar cualquiera de los campos.
HCopyRecord no adiciona el registro, hay que hacer a continuación el HAdd.

HReadFirst(Factd)
WHILE HFound()
HDelete()
HReadNext()
END
HReadFirst(f02fox)
WHILE NOT HOut(f02fox)
HCopyRecord(Factd,f02fox, hDefaultVal)
HAdd(Factd)
HReadNext(f02fox)
END

Saludos, Héctor.
Posté le 23 avril 2009 - 17:43
Hola Manuel,

HCreation(Factd)
FOR ALL f02fox
HCopyRecord(f02fox,Factd,hDefaultVal)
END


--
Saludos
pat
http://megustawindev.free.fr
Posté le 23 avril 2009 - 19:07
si muchas gracias ese comando es el equivalente a scatter memvar de fox
y era lo que estaba buscando.


Gracias

Manuel