Page 2 of 2

Re: INSERT SET o INSERt VALUES

Posted: Fri Feb 13, 2015 11:31 am
by Daniel Garcia-Gil
Saludos

si estas usando dolphin, puedes usar el metodo insert

Code: Select all

Function Test()
    local aNombres
    aadd( aNombres, {"001", "NOMBRE 1"} )
    aadd( aNombres, {"002", "NOMBRE 2"} )
    aadd( aNombres, {"003", "NOMBRE 3"} )
    aadd( aNombres, {"004", "NOMBRE 4"} )
    aadd( aNombres, {"005", "NOMBRE 5"} )
    aadd( aNombres, {"006", "NOMBRE 6"} )
    aadd( aNombres, {"007", "NOMBRE 7"} )
    aadd( aNombres, {"008", "NOMBRE 8"} )
    aadd( aNombres, {"009", "NOMBRE 9"} )
    aadd( aNombres, {"010", "NOMBRE 10"} )

    TRY
        oCon:Insert( "clientes", {"clave", "nombre"}, aNombres )    
    CATCH
    END
RETURN
 
Para un solo registro

Code: Select all

oCon:hInsert( "clientes", {"clave" => "001", "nombre" => "nombre001" } )
 
se puede usar parametros en las sentencias sql, bien sea como arreglo o hash

Code: Select all

//con array
oCon:Execute("INSERT INTO clientes (clave,nombre) values (&1,&2)", { "001", "nombre001"})
 

Code: Select all

//con hash
oCon:Execute("INSERT INTO clientes (clave,nombre) values (&clave,&nombre)", { "clave" =>"001", "nombre" => "nombre001"})
 
la diferencia notable entre SET y VALUES en el insert es que con SET solo puedes incluir un registro, con VALUES multiples registros a ala vez

Re: INSERT SET o INSERt VALUES

Posted: Fri Feb 13, 2015 12:29 pm
by acuellar
Gracias Daniel

Muy buen aporte.

Saludos,

Adhemar

Re: INSERT SET o INSERt VALUES

Posted: Fri Feb 13, 2015 6:15 pm
by sysctrl2
Fernando, Carlos Mora, Daniel
muchas gracias
voy hacer las pruebas
hay les cuento,
saludos..

Re: INSERT SET o INSERt VALUES

Posted: Wed Feb 18, 2015 5:14 am
by jnavas
Saludos Cordiales
Para resolver diversos Motores de Base de datos y expecíficamente _ de tipo fecha y lógico, hice una clase llamada TTABLE lo cual utilizo de capa intermedia entre mi aplicacion con el gestor de base de datos, publicare parte de mi código:

oTable:=OpenTable("SELECT * FROM DPDIRAPL WHERE "+cWhere,.T.,oDb)

IF oTable:RecCount()=0
oTable:AppendBlank()
oTable:cWhere:=""

cWhereInc:="DIR_CODIGO"+GetWhere("=",cCodigo )+" AND "+;
"DIR_APLICA"+GetWhere("=",cAplica )+" AND "+;
"DIR_VERSIO"+GetWhere("=",nVersion)

nNumero:=EJECUTAR("SQLINCREMENTAL","DPDIRAPL","DIR_NUMERO",cWhereInc,oDb)

ELSE
nNumero:=oTable:DIR_NUMERO
ENDIF

oTable:Replace("DIR_FECHA" ,dFecha )
oTable:Replace("DIR_HORA" ,cHora )
oTable:Replace("DIR_CODIGO",cCodigo )
oTable:Replace("DIR_APLICA",cAplica )
oTable:Replace("DIR_VERSIO",nVersion)
oTable:Replace("DIR_CARPET",cCarpeta)
oTable:Replace("DIR_FILE" ,cFile )
oTable:Replace("DIR_SIZE" ,nSize )
oTable:Replace("DIR_NUMERO",nNumero )
oTable:Replace("DIR_TXT" ,lText )
oTable:Commit(oTable:cWhere)
oTable:End()

Re: INSERT SET o INSERt VALUES

Posted: Wed Feb 18, 2015 7:10 pm
by jnavas
Saludos Cordiales

Para si uso, he creado una clase TTABLE intermedia entre mi aplicacion y la Base de datos, asi puedo utilidar diversos gestores de Base de datos y adaptar la capa financiera. he utilizado con esta misma clase MySQL, SQLSERVER y ADS con tablas ADT.


oTable:=OpenTable("SELECT * FROM DPDIRAPL WHERE "+cWhere,.T.,oDb)

IF oTable:RecCount()=0
oTable:AppendBlank()
oTable:cWhere:=""

cWhereInc:="DIR_CODIGO"+GetWhere("=",cCodigo )+" AND "+;
"DIR_APLICA"+GetWhere("=",cAplica )+" AND "+;
"DIR_VERSIO"+GetWhere("=",nVersion)

nNumero:=EJECUTAR("SQLINCREMENTAL","DPDIRAPL","DIR_NUMERO",cWhereInc,oDb)

ELSE
nNumero:=oTable:DIR_NUMERO
ENDIF

oTable:Replace("DIR_FECHA" ,dFecha )
oTable:Replace("DIR_HORA" ,cHora )
oTable:Replace("DIR_CODIGO",cCodigo )
oTable:Replace("DIR_APLICA",cAplica )
oTable:Replace("DIR_VERSIO",nVersion)
oTable:Replace("DIR_CARPET",cCarpeta)
oTable:Replace("DIR_FILE" ,cFile )
oTable:Replace("DIR_SIZE" ,nSize )
oTable:Replace("DIR_NUMERO",nNumero )
oTable:Replace("DIR_TXT" ,lText )
oTable:Commit(oTable:cWhere)
oTable:End()