Hola Adolfo,
hace tiempo que ya estuvimos en contacto, y viendo el post, volvi a probar tu clase. Muy buen trabajo, yo tengo un prototipo parecido, pero menos documentado y desarrollado que el tuyo.
Mi pequeño aporte a la clase.
La Funcion StringWhere contiene un error, y devuelve una sentencia Where que contiene solo el ultimo campo de la tabla.
- Code: Select all Expand view
Static Function StringWhere(oDb)
Local cRetorno:=""
Local x:=0
For X = 1 To oDb:nFields
If X > 1
cRetorno:= cRetorno + " and " // Quitar . and .
Endif
cRetorno+= oDb:FieldName( X -1 ) + " = " + FormatValue(x,oDb) //Concatenar +=, antes se asignaba solo el ultimo campo
Next
cRetorno:=cRetorno + " limit 1"
Return cRetorno
Como sugerenncia a esta función , creo que seria mas obtimo montar el where usando solo los campos clave, y no todos los campos como hace ahora. Una tabla con muchos campos y de mucha longitud, generará un where bastante bestia.
- Code: Select all Expand view
IF oDb:FieldName(x-1):ProPerties("KeyColumn"):Value //Si el campo es parte de la clave
...
Saludos.