Riportata la modifica per ricerca con chiavi che abbiano espressioni o
campi numerici all'interno. Particolarmente indicata per stampe vendite (Listini-Contratti-Offerte). git-svn-id: svn://10.65.10.50/trunk@4112 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c6c5e1be28
commit
1ea856efbb
@ -368,7 +368,8 @@ HIDDEN int __build_key(RecDes *recd, int numkey, RecType recin, char *key, bool
|
||||
/* build_x_cb flag di costruzione per codebase */
|
||||
{
|
||||
CHECKD(numkey > 0, "Can't build key ", numkey);
|
||||
|
||||
|
||||
const char null_char = (char)0xFF;
|
||||
key[0] = '\0';
|
||||
if (numkey-- <= recd->NKeys)
|
||||
{
|
||||
@ -408,9 +409,9 @@ HIDDEN int __build_key(RecDes *recd, int numkey, RecType recin, char *key, bool
|
||||
if (recin[off] == '\0')
|
||||
{
|
||||
memset(key + l, ' ', len);
|
||||
if (build_x_cb && ((f == _intfld) || (f == _longfld) || (f == _wordfld) ||
|
||||
(f == _intzerofld) || (f == _longzerofld)))
|
||||
key[l + len - 1] = '0';
|
||||
if ((f == _intfld) || (f == _longfld) || (f == _wordfld) ||
|
||||
(f == _intzerofld) || (f == _longzerofld))
|
||||
key[l + len - 1] = build_x_cb ? '0' : null_char;
|
||||
}
|
||||
else
|
||||
if ((f == _intfld) || (f == _longfld) || (f == _wordfld) || (f == _intzerofld) || (f == _longzerofld))
|
||||
@ -418,7 +419,7 @@ HIDDEN int __build_key(RecDes *recd, int numkey, RecType recin, char *key, bool
|
||||
int w = l, j = l + len;
|
||||
while (w < j && key[w] == ' ') w++;
|
||||
while (w < j && key[w] == '0') key[w++] = ' ';
|
||||
if (build_x_cb && (w == j)) key[w-1] = '0';
|
||||
if (w == j) key[w-1] = build_x_cb ? '0' : 0xFF;
|
||||
}
|
||||
if (upp)
|
||||
for (int i = l+len-1; i >= l; i--)
|
||||
@ -428,9 +429,20 @@ HIDDEN int __build_key(RecDes *recd, int numkey, RecType recin, char *key, bool
|
||||
}
|
||||
|
||||
// rtrim
|
||||
while (l > 0 && key[l-1] == ' ') l--;
|
||||
key[l] = '\0';
|
||||
|
||||
if (build_x_cb)
|
||||
{
|
||||
for (l--; l>=0 && key[l] == ' '; l--);
|
||||
key[l + 1] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
for (l--; l>=0 && (key[l] == ' ' || key[l] == null_char); l--);
|
||||
key[l + 1] = '\0';
|
||||
for (;l >= 0; l--)
|
||||
if (key[l] == null_char)
|
||||
key[l] = '0';
|
||||
}
|
||||
|
||||
return(NOERR);
|
||||
}
|
||||
return(_ispatherr);
|
||||
|
Loading…
x
Reference in New Issue
Block a user