PDA

Ver la Versión Completa : [Sintaxis] Busqueda Combobox


jmeza
5 de diciembre de 2023, 00:14
Hola, consulta en un combobox de pawercobov9 como podría programar la búsqueda que coincida con una parte del nombre que este en cualquier posición a lo largo de la escritura Ej: nombre de clientes.
Si alguien me puede ayudar con la rutina como hacerlo
Se lo agradezco
Saludos

Kuk
5 de diciembre de 2023, 21:31
@jmeza, mira a ver, no lo he probado casi pero algo así debes hacer. Lo mismo tienes que ajustar algo:


ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 idx-1 pic 9(4).
01 idx-2 pic 9(4) comp-5.

01 max pic 9(4) comp-5.

01 sw-enontr pic x.
88 sw-enontr-si value 's'.
88 sw-enontr-no value 'n'.

01 lineaCombo pic x(20).

01 buscar pic x(20).
01 buscLength pic 9(4) comp-5 value 0.


01 msg pic x(100).

PROCEDURE DIVISION.

move 'de5' to buscar

compute buscLength = function stored-char-length(buscar)

move 1 to idx-1
move "ListCount" OF CmCombo1 to max

set sw-enontr-no to true

perform until idx-1 > max or sw-enontr-si
move "ListString"(idx-1) OF CmCombo1 to lineaCombo

move 1 to idx-2

perform until idx-2 + buscLength > length of buscar or sw-enontr-si
if lineaCombo(idx-2:buscLength) = buscar(1:buscLength)
set sw-enontr-si to true
end-if

add 1 to idx-2
end-perform

if sw-enontr-no
add 1 to idx-1
end-if
end-perform

if sw-enontr-si
move idx-1 to "ListIndex" OF CmCombo1

string "Encontrado en la línea " idx-1 " del combo."
delimited by size into msg

INVOKE pow-self "DisplayMessage" USING msg 64

else
INVOKE pow-self "DisplayMessage" USING "No encontrado." 64
end-if

Fito
6 de diciembre de 2023, 11:05
Hola.

Acá te paso un ejemplo simple para buscar un string dentro de otro. Podés correrlo, está funcional...

Saludos

Fito...

jmeza
23 de junio de 2024, 01:23
Hola.

Acá te paso un ejemplo simple para buscar un string dentro de otro. Podés correrlo, está funcional...

Saludos

Fito...

Hola Fito
El ejemplo enviado falta un archivo que esta en el call,
da error

comienzo.
call "prgbuscar" cancel "prgBuscar".

fastpho
23 de junio de 2024, 18:46
@jmeza , en el ejemplo que subio @Fito , esta el prgbuscar como un script

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.

01 palabra pic x(20).
01 linea pic x(100).

01 wlen pic s9(5) comp-5.

01 i pic 9(8).
01 h pic 9(8).
01 si pic 9(8).

PROCEDURE DIVISION.

comienzo.
move "Text" of txtPalabra to palabra.

compute wlen = function stored-char-length(palabra).

move "ListCount" of cmbDatos to h.

move zeros to "ListIndex" of cmbDatos.

move zeros to si.
perform varying i from 1 by 1 until i > h
move "ListString"(i) of cmbDatos to linea

move function upper-case(linea) to linea
inspect linea tallying si for all palabra(1:wlen)

if si not = zeros
move i to "ListIndex" of cmbDatos
exit perform
end-if
end-perform.

exit program.


Saludos...