Existe la función?

Existe la función?

Postby Armando » Mon Dec 04, 2023 6:53 pm

Foreros:

Actualmente tengo este código
Code: Select all  Expand view  RUN

                        CASE nVez ==   5 .OR. nVez ==  21 .OR. nVez ==  37 .OR. nVez ==  53 .OR. nVez ==  71 .OR. nVez ==  87 .OR. nVez == 103 .OR.;
                             nVez == 119 .OR. nVez == 137 .OR. nVez == 153 .OR. nVez == 169 .OR. nVez == 185
 


Pero cómo ven son muchos OR, me parece haber visto una función cuyos parámetros
serían solo separados por comas (,) algo así como esto:

Code: Select all  Expand view  RUN

       nVez = 5,21,37,53,71,87,103,119,137,153,169,185
 


Será que existe la función o solo estaba soñando?

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3242
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Existe la función?

Postby Jimmy » Mon Dec 04, 2023 7:26 pm

hi,
Armando wrote:
Code: Select all  Expand view  RUN

                        CASE nVez ==   5 .OR. nVez ==  21 .OR. nVez ==  37 .OR. nVez ==  53 .OR. nVez ==  71 .OR. nVez ==  87 .OR. nVez == 103 .OR.;
                             nVez == 119 .OR. nVez == 137 .OR. nVez == 153 .OR. nVez == 169 .OR. nVez == 185
 

you can ASCAN for Value
Code: Select all  Expand view  RUN
   aVez := {5,21,37,53,71,87,103,119,137,153,169,185}

   CASE ASCAN(aVez, nVez) > 0
greeting,
Jimmy
User avatar
Jimmy
 
Posts: 1733
Joined: Thu Sep 05, 2019 5:32 am
Location: Hamburg, Germany

Re: Existe la función?

Postby Armando » Mon Dec 04, 2023 8:12 pm

Jimmy:

It's a good idea.

Thanks so much

Regards
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3242
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Existe la función?

Postby RSalazarU » Sat Dec 09, 2023 1:24 pm

Esto tambien puede servir

Code: Select all  Expand view  RUN

   SWITCH nVez
   CASE 5
   CASE 21
   CASE 37
   CASE 53
   CASE 71
   CASE 87
   CASE 103
      Msqinfo("Caso1")
      Exit //<- esto es SUPER IMPORTANTE
   CASE 119
   CASE 137
   CASE 153
   CASE 169
   CASE 185
      Msqinfo("Caso2")
      Exit //<- esto es SUPER IMPORTANTE
   DEFAULT
      Msqinfo("Sin EXITO!!")
     //
   END
 


Att. Rolando
Cochabamba, Bolivia
RSalazarU
 
Posts: 211
Joined: Wed Jul 16, 2008 12:59 pm
Location: Cochabamba-Bolivia

Re: Existe la función?

Postby RSalazarU » Sat Dec 09, 2023 1:33 pm

Otro Ejemplo

Code: Select all  Expand view  RUN

//--------------------------//
//Cambia xVar a string valido para Sql
FUNCTION Val2Str( xVar )
   Local cStr

   if xVar = NIL
      cStr :=  "NULL"
   else
      SWITCH ValType(xVar)
      CASE "L" //Logical
         cStr := if(xVar,"TRUE","FALSE")
         EXIT
      CASE "N" //Numeric
      CASE "F" //HB_FT_FLOAT S/G Harbour
      CASE "B" //DBF_FT_DOUBLE S/G ADS
      CASE "I" //Integer
      CASE "S" //Short
      CASE "+" //AutoInc(Integer)
      CASE "Z" //Currency
      CASE "Y" //Money
         cStr := Str(xVar,,,.T.)
         if Left(cStr,1)="*"
            cStr := Str(xVar, LenNum(xVar)+15, 15 /*digitos de precision por tipo FLOAT/DOUBLE*/, .T. /*lTrim*/)
         endif
            cStr := LTrim( cQuitaCeros(cStr) )
         EXIT
      CASE "D" //Date
         if Empty(xVar) //es necesario esta pregunta. Ejm: CTOD("") => '  /  /    '
            cStr := "NULL"
         else
            cStr := cValToStr(xVar,"YYYY-MM-DD")
         endif
         EXIT
      CASE "C" //Char
      CASE "Q" //HB_FT_VARLENGTH //ADS_FT_VARCHAR
      CASE "V" //
         //NOTAS
         //- Reemplazamos:
         //  . comilla simple(') por su similar (´), evitamos inyeccion sql y error 2113 Unexpected end of statement
         //  . chr(0) por chr(32), chr(0) en un string sql provoca error: 2113 Unexpected end of statement, 04/05/2017
         cStr := StrTran(StrTran(xVar,"'","´"),chr(0),chr(32))
         EXIT

      /*cometeriamos un error
      CASE "M" //Memo
      CASE "W" //DBF_FT_BINARY
      CASE "P" //DBF_FT_IMAGE
         if Empty(xVar) //es necesario esta pregunta. Ejm: CTOD("") => '  /  /    '
            cStr := "NULL"
         else
            cStr := StrTran(StrTran(xVar,"'","´"),chr(0),chr(32))
         endif
         EXIT
      */


      /*va por DEFAULT
      CASE "T" //Time
      CASE "@" //TimeStamp
      CASE "=" //ModTime
      */

      DEFAULT
         cStr := cValToChar(xVar)
      END
   endif
Return cStr
 


Rolando
Cochabamba, Bolivia
RSalazarU
 
Posts: 211
Joined: Wed Jul 16, 2008 12:59 pm
Location: Cochabamba-Bolivia

Re: Existe la función?

Postby Armando » Sat Dec 09, 2023 3:07 pm

Rolando:

Amigo, te agradezco la sugerencia, pero la idea es evitar tanto código como los .OR.
será que tal vez no entendí tu código?

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3242
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Existe la función?

Postby FranciscoA » Sat Dec 09, 2023 4:55 pm

Armando, y asi?
Code: Select all  Expand view  RUN
local nVez := 103

if alltrim(Str(nVez)) $ "5,21,37,53,71,87,103,119,137,153,169,185"
   msginfo("Encontrado",nVez)
endif
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Existe la función?

Postby Armando » Sat Dec 09, 2023 5:43 pm

Francisco:

Esta sugerencia puede ser !

Muchas gracias, saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3242
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Existe la función?

Postby FiveWiDi » Sat Dec 09, 2023 7:27 pm

FranciscoA wrote:Armando, y asi?
Code: Select all  Expand view  RUN
local nVez := 103

if alltrim(Str(nVez)) $ "5,21,37,53,71,87,103,119,137,153,169,185"
   msginfo("Encontrado",nVez)
endif


La idea para mi es válida, yo la utilizo así:

-->> if ( "," + alltrim( Str(nVez) ) + "," ) $ ",5,21,37,53,71,87,103,119,137,153,169,185,"

caso contrario daría como válido el valor '3'.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
 
Posts: 1202
Joined: Mon Oct 10, 2005 2:38 pm

Re: Existe la función?

Postby Armando » Sat Dec 09, 2023 7:38 pm

Carlos:

Por supuesto que funcionaría y me parece que de manera exacta pues
el siguiente código mostraría encontrado y es falso.

Code: Select all  Expand view  RUN

   local nVez := 103

   if alltrim(Str(nVez)) $ "5,1030,21,37,53,71,87,119,137,153,169,185"
      msginfo("Encontrado",nVez)
   endif
 


Saludos y gracias a ambos (Francisco y Carlos, Carlos y Francisco)
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3242
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Existe la función?

Postby nageswaragunupudi » Mon Dec 11, 2023 8:11 pm

This suggestion of Mr. Jimmy
you can ASCAN for Value
Code:
aVez := {5,21,37,53,71,87,103,119,137,153,169,185}

CASE ASCAN(aVez, nVez) > 0

is the best and the right one, in my opinion.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10690
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Existe la función?

Postby Armando » Tue Dec 12, 2023 5:21 pm

Mr. Rao:

Thanks a lot.

Regards
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3242
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 131 guests