Power Builder - OLEDB Y PB

   
Vista:

OLEDB Y PB

Publicado por Mark antonio (1 intervención) el 14/02/2008 20:59:13
saludos.
trabajo con pb10.5 y sql server 2000. me conecto via ole db. pero surgen algunos problemas.

1. no permite multiusuario. tengo 2 usuarios conectados a la base y los dos realizan la misma operación, el sistema se trunca hasta que un usuario cierre la ventana.

este asunto lo solucioné poniendo el autocommit = true

pero en este caso no me funciona bien las transacciones.en una secuencia de codigo (insertes, updates, deletes) si todo el proceso se realiza con éxito al final hago el commit using sqlca. pero sucede que no me está funcionando el commit funciona independiente por cada sentencia.

// ejemplo de una secuencia de codigo
inser into tabla
If sqlca.sqlcode <> 0 Then
rollback using sqlca;
message de error
return -1
End If

update tabla set campo = valor ;
If sqlca.sqlcode <> 0 Then
rollback using sqlca:
Message de error
return -1
end If

update tabla2 set campo = valor;
If slqca.sqlcode <> 0 then
rollback using sqlca;
message de error
return -1
End If

Commit using sqlca;
return 1

en este codigo con pb 9 , y conexion nativa funciona perfectamente
como ven si todo está ok, al final hago el commit.

este el mi conexión
SQLCA.DBMS = "OLE DB"
SQLCA.LogId = "SA"
SQLCA.AutoCommit = True
SQLCA.DBParm = "PROVIDER='SQLOLEDB',DATASOURCE='mipc,PROVIDERSTRING='database=DB_PRUEBA'"

como puede solucionar esto.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:OLEDB Y PB

Publicado por Luis Mota (32 intervenciones) el 15/02/2008 20:25:01
Hola mark
segun como lo expones que se bloquea la ventana cuando 2 usuarios habren la esta misma.

1. me imagino que la ventana tiene un DW para cargar datos
y de seguro esa ventana tiene un retrieve y ese DW esta conformada por un select EJEM. SELECT NOMBRE, APELLIDO FROM CLIENTE
una de las razones puede ser que despues de la sentencia FROM CLIENTE colocarlo el WITH(NOLOCK) osea seria FROM CLIENTE WITH(NOLOCK) con eso haces que cualquier usuarios q se trate de conectar a esta tabla no bloquee y si fuese un SP tambien dentro del sp HABRA UN SELECT y tambien colocarlo el WITH(NOLOCK)

2. en otro punto AUTOCOMMIT = true no es recomendable a mi parecer la razon es muy simple imagina que estas en un proceso de varios INSERT , DELETE UPDATE

EJEMPLO .
INSERT INTO TABLA01 (CAMPO1, CAMPO2, CAMP3) VALUES (1,2,3)
...... mas lineas de proceso
...... mas lineas de proceso
...... mas lineas de proceso
(EL INSERT FUNCIONA CORECTAMENTE) asu vez lo pusistes autocommit = true (quiere decir q cada insert , delete establece por terminado la insercion o eliminacion)
...... mas lineas de proceso
...... mas lineas de proceso

DELETE TABLA02 WHERE CAMPO1 = 2
( pero aca por algun motivo falla el DELETE) de hecho tienes q deshacer todos los cambios ) pero como lo pusistes autocommit = true ya no puedes deshacer el insert que eta arriba y genereraria inconsitencia de data.

por eso para mi en particular no coloco autocommit =true

3. en vez de usar directamente el SQLCA. mejor crea otra transaction por q tambien por este motivo se bloquea algunos proceso

Espero te ayude...

Saludos
Luis Mota.
Lima-Peru
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:OLEDB Y PB

Publicado por shelo (1 intervención) el 29/02/2008 20:49:37
se agredece compradre pero servira para el 7.0

si asi fuese seria estupendo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:OLEDB Y PB

Publicado por Julio Baquero (3 intervenciones) el 08/03/2008 01:16:49
Lo unico que tienes que hacer, es setear el AUTOCOMMIT = FALSE, para que puedas realizar un ROLLBACK completo en caso que alguna operacion (Insert, Delete o Update) falle. Ademas, en el seteo de tu objeto transaccion SQLCA, agrega la siguiente linea:

SQLCA.Lock = "RU" // Read Uncommited

Espero haberte ayudado a solucionar tu problema mas fácilmente.

Atte: -=[Cowboy]=-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:OLEDB Y PB

Publicado por ee (1 intervención) el 14/03/2008 21:53:15
sabes que ...fomatea la maquina
y problema solucionado

je je
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar