FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour SQLADS - Que hago mal (Solucionado)
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
SQLADS - Que hago mal (Solucionado)
Posted: Mon May 06, 2013 02:55 PM
SQLADS me supera!
Tengo el siguiente c贸digo:
Code (fw): Select all Collapse
 聽 if !"hConnect" IN h0
聽 聽 聽 AdsConnect( 聽::oMG:hIni["CAMINOS"]["bdatos"]+"\local", ::oMG:hIni["ADS"]["srvtipo"] )
聽 聽 聽 h0:hConnect:= AdsConnection()
聽 聽else
聽 聽 聽 if Select( "SQLSele" ) > 0
聽 聽 聽 聽 聽SQLSele->( DbCloseArea() )
聽 聽 聽 end
聽 聽end
聽 聽DBSelectArea( 0 )

聽 聽if !ADSCreateSQLStatement( "SQLSele", ADS_CDX, h0:hConnect )
聽 聽 聽 MsgStop( "Fallo en la conexi贸n a Tablas [Error N潞: "+cValTochar( AdsGetLastError() ), "Reintente..." )
聽 聽 聽 return( nil )
聽 聽end

聽 聽if !ADSExecuteSQLDirect( "SELECT Count(*) FROM BDSGC36 WHERE FSele01=.T." )
聽 聽 聽 MsgStop( "Fallo en lectura de Tabla Adicional de Articulos", "Reintente..." )
聽 聽 聽 SQLSele->( DbCloseArea() )
聽 聽else
聽 聽 聽 if SQLSele->Expr == 0
聽 聽 聽 聽 聽SQLSele->( DbCloseArea() )
聽 聽 聽 聽 聽ADSCreateSQLStatement( "SQLSele", ADS_CDX )
聽 聽 聽 聽 聽ADSExecuteSQLDirect( 'INSERT INTO BDSGC36 SELECT FArt02 FROM "'+(::oMG:hIni["CAMINOS"]["bdatos"])+'\BDSGC01"' )
聽 聽 聽 end
聽 聽end

El problema es que la sentencia:
'INSERT INTO BDSGC36 SELECT FArt02 FROM "'+(::oMG:hIni["CAMINOS"]["bdatos"])+'\BDSGC01"'

no se ejecuta. Y, probada desde ARC si se ejecuta
Que est谩 mal en mi c贸digo?
muchas gracias
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Re: SQLADS - Que hago mal
Posted: Mon May 06, 2013 07:06 PM
Hola Mario:

creo que tienes varios errores:

Code (fw): Select all Collapse
SELECT Count(*) FROM BDSGC36 WHERE FSele01=.T.


creo que deberia ser:
Code (fw): Select all Collapse
SELECT Count(*) FROM BDSGC36 WHERE FSele01=TRUE


y .. no se entiende que deberia hacer la siguiente instruccion:

Code (fw): Select all Collapse
'INSERT INTO BDSGC36 SELECT FArt02 FROM "'+(::oMG:hIni["CAMINOS"]["bdatos"])+'\BDSGC01"'


* despues del FROM solo deberia estar el nombre de la tabla.
* que es FArt02 ???
* Como estas insertando de una tabla a otra, la estructura de las dos deberia ser similar.
* creo que deberia ser algo asi como:

Code (fw): Select all Collapse
'INSERT INTO BDSGC36 SELECT * FROM BDSGC01'

Atentamente:

Rolando.
Cochabamba, Bolivia.
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: SQLADS - Que hago mal
Posted: Tue May 07, 2013 12:10 PM
Rolando; gracias por tu tiempo
Respondo:
SELECT Count(*) FROM BDSGC36 WHERE FSele01=.T.

Esto es correcto para ADSSQL lo hago en ARC, ademas de en mi c贸digo y me devuelve lo esperado y, como bien dices, tambi茅n lo hace con TRUE

luego,
'INSERT INTO BDSGC36 SELECT FArt02 FROM "'+(::oMG:hIni["CAMINOS"]["bdatos"])+'\BDSGC01"'

es lo mismo que hacer:
Code (fw): Select all Collapse
INSERT INTO BDSGC36 SELECT FArt02 FROM "d:\MiApp\bDatos\BDSGC01"

Fart02 es el campo que selecciono de BDSGC01 para insertar en BDSGC36
Esto tambi茅n, al menos en ARC, funciona. Probablemente no en c贸digo, aunque no me devuelve ning煤n error
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: SQLADS - Que hago mal
Posted: Tue May 07, 2013 02:06 PM
Hola

Al parecer esta correcto, ahora habria que ver que error te esta dando ADS

coloca esta instruccion despues de AdsExecuteSqlDirect

Code (fw): Select all Collapse
MsgInfo("error AdsExecuteSqlDirect(cSql)" + CRLF + "Error:"+cValtochar( AdsGetLastError() ) )


y veamos que error esta lanzando
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: SQLADS - Que hago mal
Posted: Tue May 07, 2013 03:17 PM

Patricio;
El numero de error es 7200

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: SQLADS - Que hago mal
Posted: Wed May 08, 2013 01:40 PM
Mario

el problema es la consulta segun el error
Problem: The problem might be caused by an SQL statement error or some other limitation in the way Advantage processes SQL statements.

lo que debieras hacer es ir paso a paso a ver que pasa

1.- hacer esta consulta a ver que retorna

Code (fw): Select all Collapse
cSql := "SELECT FArt02 FROM " +::oMG:hIni["CAMINOS"]["bdatos"] + "\BDSGC01"

if SqlEjecute( cSql )
  //error
endif
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: SQLADS - Que hago mal
Posted: Wed May 08, 2013 02:54 PM
Patricio; gracias por tu tiempo
El aislar me ayud贸 a encontrar el error!

Estaba mal escrita la sentencia
'INSERT INTO BDSGC36 SELECT FArt02 FROM "'+(::oMG:hIni["CAMINOS"]["bdatos"])+'\BDSGC01"'

correcta:
Code (fw): Select all Collapse
'INSERT INTO Bdsgc36 (FArt01) SELECT FArt02 FROM "'+(::oMG:hIni["CAMINOS"]["bdatos"])+'\BDSGC01"'


Ahora, dos consultas mas:
AdsGetLastError() retorna 5018, que es?
Como se consigue la tabla de errores?. Tengo ADSERROR.hlp (aunque solo funciona en XP), pero interpreto que no se refiere a los errores SQLADS

gracias nuevamente
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: SQLADS - Que hago mal
Posted: Wed May 08, 2013 10:25 PM
Hola Mario

instala Advantage Data Architect, que es como el DBU

http://devzone.advantagedatabase.com/dz/content.aspx?key=20&Release=16

este te creara un grupo ahi busca Advantage Help File

en la ayuda busca Advantage Error Guide
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: SQLADS - Que hago mal
Posted: Wed May 08, 2013 10:45 PM

Gracias Patricio
Sirmpre estuvo ah铆!!! (nunca inspeccione la carpeta) :oops:

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina

Continue the discussion