DBSEEK - Problemas con la busqueda alfabetica

HMG en Español

Moderator: Rathinagiri

franco
Posts: 816
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Location: Canada

Re: DBSEEK - Problemas con la busqueda alfabetica

Post by franco »

this works
fieldname = Name (character ,30) value TOM SMITH
use customer
set index to custname
N := 'TOM SMITH'
N := N + SPACE(LEN(NAME)-LEN(N))
SEEK N
FOUND() = .T.
N := 'TOM SMIT'
N := N + SPACE(LEN(NAME)-LEN(N))
SEEK N
FOUND() = .F.
All The Best,
Franco
Canada
User avatar
AUGE_OHR
Posts: 2060
Joined: Sun Aug 25, 2019 3:12 pm
DBs Used: DBF, PostgreSQL, MySQL, SQLite
Location: Hamburg, Germany

Re: DBSEEK - Problemas con la busqueda alfabetica

Post by AUGE_OHR »

franco wrote: Mon Jan 27, 2020 4:59 am this works
please use Code "Tag"
CodeTag.jpg
CodeTag.jpg (4.73 KiB) Viewed 1351 times
Ok i see you want your "own" SEEK like this

Code: Select all

#include "hmg.ch"
#include "Dbstruct.ch"
REQUEST HB_GT_WIN_DEFAULT           // Console

PROCEDURE MAIN
LOCAL aStru
   CLS
   IF !FILE("TEST.DBF")
      Cre_File("TEST.DBF")
   ENDIF
   USE TEST EXCLUSIVE
   aStru := DbStruct()
   nLen  := aStru[1][DBS_LEN]

   INDEX ON TEST->TESTC TO TESTC
   CLOSE INDEX

   SET INDEX TO TESTC
   SET ORDER TO 1       // TESTC

   PadSeek("TOM",nLen)
   ? found()
   PadSeek( "TOM S",nLen )
   ? found()
   PadSeek( "TOM SMITH",nLen )
   ? found()
   ? INDEXKEY()
   ? LEN(INDEXKEY())
   ? &(INDEXKEY())

WAIT
RETURN

FUNCTION PadSeek(cIn, nLen)
LOCAL cSeek
   cSeek := PADR(cIn,nLen," ")
   cSeek := SUBSTR(cSeek,1,nLen)
   SEEK cSeek
RETURN FOUND()

PROCEDURE Cre_File(cDBF)
LOCAL i, field_list := {}

   AADD( field_list, { "TESTC", "C", 10, 0 } )
   DBCREATE( cDBF, field_list, "DBFNTX" )

   USE (cDBF) EXCLUSIVE
   FOR i := 1 TO 100
      APPEND BLANK

      IF i = 50
         REPLACE TESTC WITH "TOM SMITH"
      ELSE
         REPLACE TESTC WITH Replicate( "TOM "+CHR( RANDOM(26)+64) , 6 )
      ENDIF
   NEXT

RETURN
DEMOSEEK.ZIP
(815 Bytes) Downloaded 129 times
have fun
Jimmy
User avatar
Anand
Posts: 595
Joined: Tue May 24, 2016 4:36 pm
DBs Used: DBF

Re: DBSEEK - Problemas con la busqueda alfabetica

Post by Anand »

From time of Clipper, I have been using below,

Code: Select all

use customer
set index to custname
N := 'TOM SMITH'
SEEK pad(N, LEN(NAME))
FOUND() => .T.
N := 'TOM SMIT'
SEEK pad(N, LEN(NAME))
FOUND() => .F.
And this works in Xbase++ and Harbour too.

Regards,

Anand
Regards,

Anand

Image
franco
Posts: 816
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Location: Canada

Re: DBSEEK - Problemas con la busqueda alfabetica

Post by franco »

Thanks to all,
Anand, I forgot about pad
All The Best,
Franco
Canada
Post Reply