ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL

ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL

Postby Angel Miguel » Sun Apr 19, 2020 5: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()
Angel Miguel
 
Posts: 4
Joined: Tue Mar 17, 2020 5:18 pm

Re: ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL

Postby MOISES » Sun Apr 19, 2020 9: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: Select all  Expand view
"WHERE CODSOC = " + FW_ValToSQL(oRs:Fields("CODSOC"):Value) +;
Saludos / Regards,

FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
MOISES
 
Posts: 838
Joined: Wed Aug 22, 2007 10:09 am

Re: ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL

Postby Angel Miguel » Mon Apr 20, 2020 6: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
Angel Miguel
 
Posts: 4
Joined: Tue Mar 17, 2020 5:18 pm

Re: ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL

Postby Armando » Mon Apr 20, 2020 2: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
User avatar
Armando
 
Posts: 3061
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL

Postby gmart1 » Mon Apr 20, 2020 3: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.
gmart1
 
Posts: 80
Joined: Wed Oct 24, 2007 12:48 pm
Location: Alhaurin de la Torre (MALAGA)

Re: ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL

Postby Angel Miguel » Tue Apr 21, 2020 5: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.
Angel Miguel
 
Posts: 4
Joined: Tue Mar 17, 2020 5:18 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 69 guests