ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL

Post Reply
Angel Miguel
Posts: 4
Joined: Tue Mar 17, 2020 5:18 pm

ADO: ACTUALIZAR CAMPO DE SELECT DE 02 TABLAS MSSQL

Post by Angel Miguel »

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()
MOISES
Posts: 824
Joined: Wed Aug 22, 2007 10:09 am

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

Post by MOISES »

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

"WHERE CODSOC = " + FW_ValToSQL(oRs:Fields("CODSOC"):Value) +;
Saludos / Regards,

FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
Angel Miguel
Posts: 4
Joined: Tue Mar 17, 2020 5:18 pm

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

Post by Angel Miguel »

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
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

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

Post by Armando »

Á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
gmart1
Posts: 65
Joined: Wed Oct 24, 2007 12:48 pm
Location: Alhaurin de la Torre (MALAGA)

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

Post by gmart1 »

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

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

Post by Angel Miguel »

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 _. Gracias de antemano.
Post Reply