Olvídate del tema del control de compromiso y los journals. Entiendo que
si puedes insertar no debes tener el problema que te expuse en mi primer
correo.
Los journals son logs para control de transacciones, te permiten hacer
COMMIT o ROLLBACK de la transacción y confirmas o deshaces todo lo que has
hecho.
Si tu cadena de conexión especificas que vas a usar transacciones (control
de compromiso <> *none), al operar con un fichero que no tiene registro de
transacciones (journal) te impide la actualización.
Lo mejor es que hables con el administrador de BD del as400 y hagáis un
trabajo conjunto. Quizás podríais crear una biblioteca aparte donde tengas
tus ficheros de trabajo, y donde si puedas hacer updates, inserts y lo que
haga falta.
Un Saludo.
Jose Vicente Cercós.
<[email protected]>
Enviado por: [email protected]
27/01/2010 04:36
Por favor, responda a
"forum.help400" <[email protected]>
Para
"'forum.help400'" <[email protected]>
cc
Asunto
RE: DELETE - UPDATE (AS400 y VBA)
Gracias José por responder.
En realidad es extraño porqué no puedo hacer un “DELETE” o un “UPDATE”.
Te explico un poco la situación. Trabajo para un área administrativa de
una institución bancaria, y por lo tanto no tengo acceso al AS400 como me
gustaría tener, tipo administrador, pero hago lo mejor que puedo. Por
razones de seguridad no puedo instalar “.NET”, así que trabajo el editor
de visual en Excel (VBA)
Hoy hablé con el responsable del área y me dice que no es tan crítico el
punto de “subir” información, así que puedo obviar un poco lo de borrar
datos de un fichero. Y la razón es porque usan “cwbtfxla.xll” para subir
datos. (pero me hubiese gustado programarlo)
Pero me gustaría, sino es mucha molestia que me explicaras si es posible,
¿cómo puedo comprobar si tengo “compromiso de control distinto de *NONE? y
si los ficheros no tienen Journal. Pero, pero con algunas líneas de código
o si no es posible así, entonces dónde podría revisar.
Gracias por tu atención.
Nota: Mañana haré otro correo (creo que es lo más adecuado) preguntando
sobre ¿cómo puedo mediante VBA o Visual Basic 6.0 saber si un Fichero y/o
Query existe en una biblioteca?
Gracias.
De: [email protected]
[mailto:[email protected]] En nombre de Jose Vicente
Cercos Barres
Enviado el: Martes, 26 de Enero de 2010 03:32 a.m.
Para: forum.help400
Asunto: Re: DELETE - UPDATE (AS400 y VBA)
Disculpa, no me había dado cuenta que si podías hacer Insert. Es muy raro.
Para descartar que el fichero contra el que actúas tiene algo especial,
crea uno de cero e intenta añadir, borra, y actualizar.
Yo utilizo .Net y uso OleDbConnection en lugar de ADODB. También utilizo
el driver IBMDASQL en lugar del IBMDA400. Revisa que tengas la última PTF
del Client Access instalada.
Te adjunto un fragmento de código para que veas la cadena de conexión:
Usuario = frmLogin.glUsuario
Pwd = frmLogin.glPassword
'Conectar con AS400
Dim S As String
S = "Provider=IBMDASQL.DataSource.1;" _
& "Persist Security Info=False;" _
& "User ID=" & Trim(Usuario) & ";" _
& "Password=""" & Trim(Pwd) & """;" _
& "Data Source=MyAS400;Protection Level=None;Extended
Properties="""";Initial Catalog=AS400;" _
& "Transport Product=Client Access;SSL=DEFAULT;Force
Translate=65535;" _
& "Default Collection=MYLIB;Convert Date Time To Char=TRUE;" _
& "Catalog Library List=MYLIB;Cursor Sensitivity=3;Use SQL
Packages=False;" _
& "SQL Package Library Name="""";SQL Package Name="""";" _
& "Add Statements To SQL Package=True;Unusable SQL Package
Action=1;" _
& "Block Fetch=True;Data Compression=True;Sort Sequence=0;Sort
Table Name="""";" _
& "Sort Language ID="""";Query Options File
Library="""";Trace=0;Hex Parser Option=0;" _
& "Maximum Decimal Precision=31;Maximum Decimal
Scale=31;Minimum Divide Scale=0"
Me.OleDbConnection1.ConnectionString = S
Try
Me.OleDbConnection1.Open()
Me.OleDbConnection1.Close()
UsuarioAS400 = True
Catch ex As Exception
MsgBox("Error al conectar: " + ex.Message)
Me.OleDbConnection1.ConnectionString = ""
End Try
Un Saludo.
Jose Vicente Cercós.
Jose Vicente Cercos Barres <[email protected]>
Enviado por: [email protected]
26/01/2010 09:16
Por favor, responda a
"forum.help400" <[email protected]>
Para
"forum.help400" <[email protected]>
cc
Asunto
Re: DELETE - UPDATE (AS400 y VBA)
Hola Ricardo.
Lo primero sería comprobar que tienes permisos de escritura sobre
los ficheros, lo segundo comprobar si tus ficheros no tienen journal y tu
cadena de conexión tiene control de compromiso distinto de *NONE, por
tanto cuando vas a hacer consultas de actualización al no detectar journal
falla. El código no tiene mala pinta. Revisa tu cadena de conexión a
fondo.
Un Saludo.
Jose Vicente Cercós.
<[email protected]>
Enviado por: [email protected]
26/01/2010 04:29
Por favor, responda a
"forum.help400" <[email protected]>
Para
"'forum.help400'" <[email protected]>
cc
Asunto
DELETE - UPDATE (AS400 y VBA)
Hola a Todos, mi nombre es Ricardo.
Actualmente estoy haciendo una aplicación de interfaz en mi trabajo (
VBA-Excel) la cual se debe conectar al AS400. Hasta ahora el único
problema que tengo es este:
¿cómo borrar todos los datos de un archivo?
Resulta que la empresa en la cual trabajo usan el AS400 y tienen como 58
queries para realizar muchos informes. Usan un complemento bien conocido
llamado “cwbtfxla” para bajar y subir datos al AS400. Hace un mes me
contrataron y propuse hacer un interfaz o un menú para subir, bajar y
editar datos. Pero tengo un problema en cuanto a actualizar y/o borrar
datos.
Puedo ingresar registros con “INSERT INTO CLIENTE ( CUENTA) VALUES
(‘377704697826’)” pero cuando uso instrucciones SQL como “UPDATE o
DELETE”; o me envía un error, o se cierra Excel o simplemente se queda
colgado y tengo que teclear CTRL+ALT+SUPR
Pongo un código típico que debería funcionar, pero al llegar a
“MYCONN.EXECUTE (SQL)” me da error. ¿qué hace falta?:
Sub Borrar_Datos_Del_Fichero()
Dim SQL As String
Dim MyConn As ADODB.Connection
SQL = "DELETE FROM CLIENTE.CUENTA"
Set MyConn = New ADODB.Connection
MyConn.Mode = adModeReadWrite
MyConn.CursorLocation = adUseClient
MyConn.ConnectionString = "Provider=IBMDA400;Data source=123.105.2.5;User
Id=USUARIOX;Password=CLAVEX"
MyConn.Open
MyConn.Execute (SQL)
MyConn.Close
End Sub
Nota 1: No tengo ningún problema en la conexión, pues puedo importar e
insertar datos.
Nota 2: Tengo dos semanas buscando por todo internet y he probado una
docena de posibilidades y nada
Gracias por toda la ayuda que me puedan brindar, pues encontrar trabajo no
es fácil en estos tiempos, pero con Fe todo se puede.
__________ Información de ESET NOD32 Antivirus, versión de la base de
firmas de virus 4805 (20100125) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com____________________________________________________
© Publicaciones Help400, S.L. - Todos los
derechos reservados http://www.help400.es
----------------------------------------------------
Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400
____________________________________________________
© Publicaciones Help400, S.L. - Todos los
derechos reservados http://www.help400.es
----------------------------------------------------
Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400
__________ Información de ESET NOD32 Antivirus, versión de la base de
firmas de virus 4805 (20100125) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com____________________________________________________
© Publicaciones Help400, S.L. - Todos los
derechos reservados http://www.help400.es
----------------------------------------------------
Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400
____________________________________________________
© Publicaciones Help400, S.L. - Todos los
derechos reservados http://www.help400.es
----------------------------------------------------
Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400