Si con 'el primer programa', te refieres a la primera versión en zip que subí, sucede lo mismo que te comentaba en el último...
El registro tiene para el campo artículo un valor de tipo string de tamaño 'fijo' (...as string *12), es decir se rellena con espacios al final si el artículo no completa el tamaño del campo.
Hay esto en el código:
...
Get #Canal, ptr, Articulo
If (LCase$(Articulo) = Producto) Then
...
Falta por tanto eliminar los espacios, tan simple como cambiarlo por esto:
...
Get #Canal, ptr, Articulo
If (LCase$(trim$(Articulo)) = Producto) Then
...
En cualquier caso, debes
utilizar las herramientas de debug, que el IDE ofrece (El IDE no sirve meramente para dejar colorido el texto, tiene muchas herramientas interesantes)...
Si revisas el contenido del valor 'Producto' justo donde se hace la comparación, verás que es: "alicates"
...y de igual modo con la expresión 'LCase$(Articulo)', verías que es: "alicates "
...se observa que en efecto se diferencian en los espacios, luego la solución aparece obvia, sin entrar en pánico ni revisiones complejas.
Puedes poner un simple punto de parada en dicha línea (pulsa la tecla F9 encima de dicha línea en tu código y ejecuta el programa (estamos en modo diseño, ahí se interpreta)... al llegar a esa línea con un punt de parada, el intérprete se para en dicha línea, teniendo ahí el cursor, puedes hacer desde un simple:
debug.print "." & articulo & "." , "." & lcase$(articulo) & "."
' los puntos son solo para determinar claramente donde empiea y termina el string, lo espacios pueden pasar desapercibido...
Sea pegando está línea justo antes de esa y ejecutándola, o abriendo la ventana de pruebas (inmediato) CTRL+G (o buscarla desde el menú --> Ver ...).
También simplemente seleccionado una expresión y desde el: 'menú --> debug --> inspeccion rapida', etc... mejor si se edita el propio menú para tenerlo en el menú contextual.
Por último se te señalo que
la comparación, además de no ignorar espacios, exige exactitud, de ahí que incluso sea preferible hacer una búsqueda parcial...
...también sucede que la búsqueda se realiza desde el comienzo, luego, si encuentra el primer registro que cumple la condición y sale... una nueva búsqueda (sin más), para lo mismo volverá a buscar desde el inicio y volverá a encontrar exactamente el mismo registro (si no se eliminó y lo que se busca es lo mismo que antes)...
pero... en el último programa (que subí)...
la capacidad para seguir buscando desde el previo encontrado, está implementadaasí como una búsqueda parcial, (podrás ver en el menú que aparece un 'buscar siguiente', que admeás se activa o desactiva conforme la posibilidad de buscar un siguiente exista)...
La búsqueda parcial de un artículo tira del operador 'like' (que es la forma de usar expresiones regulares en vb6), por lo que te conviene que si pasas al primer proyecto, al menos incluyas los cambios acometidos a este respecto en el segundo (en el primero solo se dejó 'insinuado' dicha posibilidad, completarlo quedaba a tu cargo, sin embargo en el segundo lo dejé hecho).