FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL
Posts: 4
Joined: Tue Mar 17, 2020 05:18 PM
ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL
Posted: Sun Apr 19, 2020 05:59 AM

Amigos:

Tengo el siguiente problema, requiero actualizar un campo de recordset, el cual se construyo en base a un query, luego de actualizar me arroja error

cSql:="SELECT D.*,DP.NOMBRE AS DPTO, PR.NOMBRE AS PROV,DI.NOMBRE AS DIST "+;
"FROM DIRECCION D "+;
" LEFT JOIN DEPARTAMENTO DP ON D.CODDEP=DP.CODDEP "+;
" LEFT JOIN PROVINCIA PR ON D.CODPRO=PR.CODPRO AND D.CODDEP=PR.CODDEP "+;
" LEFT JOIN DISTRITO DI ON D.CODDIS=DI.CODDIS AND D.CODPRO=DI.CODPRO AND D.CODDEP=DI.CODDEP "+;
"WHERE CODSOC = '"+ oRs:Fields("CODSOC"):Value +"' "+;
"ORDER BY ACTIVO"

oRsDir := TOleAuto():New( "ADODB.RecordSet" )

WITH OBJECT oRsDir
    :ActiveConnection       := oApp:oCon
    :Source             := cSql
    :CursorLocation     := adUseClient
    :LockType           := adLockOptimistic
    :CursorType         := adOpenDynamic
    TRY
    :Open()
    CATCH
    FW_ShowAdoError( oApp:oCon )
END
END

oRsDir:Properties("Unique Table"):Value := "DIRECCION"

&& AQUI ACTUALIZO

oRsDir:Fields("ACTIVO"):Value:='0' && el campo activo es de la tabla direccion
oRsDir:Update()

Posts: 838
Joined: Wed Aug 22, 2007 10:09 AM
Re: ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL
Posted: Sun Apr 19, 2020 09:55 AM
Hola:

No has indicado el error.

Asimismo, esta l铆nea deber铆a usar la funci贸n FW_ValToSQL():

"WHERE CODSOC = '"+ oRs:Fields("CODSOC"):Value +"' "+;

que deber铆a ser:

Code (fw): Select all Collapse
"WHERE CODSOC = " + FW_ValToSQL(oRs:Fields("CODSOC"):Value) +;
Saludos / Regards,



FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
Posts: 4
Joined: Tue Mar 17, 2020 05:18 PM
Re: ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL
Posted: Mon Apr 20, 2020 06:33 AM
Moises:

El error que se presenta es el siguiente:

NO IMPLEMENTADO
Source: Provider
NativeError: -2147467263
Error Source: Provider
Sql State:

El problema radica en que la construccion del query, es por la union de 03 tablas, para luego solo requerir actualizar un campo de una tabla, por ello aplico lo siguiente:

oRsDir:Properties("Unique Table"):Value := "DIRECCION"

En las recordset donde uso 01 tabla, aplico el mismo codigo y la actualizaci贸n se realiza sin problemas.

Gracias Moises y a todos.

Saludos
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL
Posted: Mon Apr 20, 2020 02:04 PM

脕ngel Miguel:

Te voy a contar mi experiencia con SELECT que usan LEFT JOIN, ya sea de dos o mas tablas,
mi problema es que cuando elimino el registro de una de las dos tablas con oRs:Delete se
eliminan los registros de ambas tablas, por favor prueba y ya nos contaras.

Tal ves por ah铆 va tu problema, mi soluci贸n?, no usar oRs:Update u oRs:Delete, utiliza
el comando UPDATE o DELETE seg煤n sea el caso.

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
Posts: 84
Joined: Wed Oct 24, 2007 12:48 PM
Re: ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL
Posted: Mon Apr 20, 2020 03:28 PM

Hola, mi experiencia con MySQL es que en un Select combinado con Join no se puede actualizar un campo, no lo permite el conector ODBC.

Mi soluci贸n es abrir la tabla sin el Join y posicionarme en el mismo ID, actualizar y cerrar el objeto ADO, por 煤ltimo un reQuery del select original.

Un saludo.

Posts: 4
Joined: Tue Mar 17, 2020 05:18 PM
Re: ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL
Posted: Tue Apr 21, 2020 05:43 AM
Amando y Gmart1:
Aplique el UPDATE respetivo, seguido del requery respectivo al recordset, con ello di soluci贸n a mi problema. Muchas Gracias por su tiempo y apoyo.

Nages:
Ser谩 factible tu comentario sobre la limitaci貌n que presenta ado para estos casos. Gracias de antemano.

Continue the discussion