Newsgroup: it.comp.appl.access
Titolo: LANCIO COMANDI DA VB SU AS400

Salve,
ho provato a porre una domanda nel gruppo AS400 ma ancora non sono
arrivato alla soluzione forse il problema è da imputare ad un errore
in VB.
Ho la seguente stringa da lanciare su AS400
CALL MCMLNAZI.NTE28BCL ('00867' '01')
00867    e  01 sono dei parametri
il primo parametro è sampre lungo 5 il secondo è sempre lungo 2
ho creato un semplce pulsante con il seguente codice:
(MCM è una connessione ODBC presente sul mio PC)
CurrentDb.Connect = "ODBC; DSN=MCM"
CurrentDb.Execute "CALL MCMLNAZI.NTE28BCL ('00867' '01')",
dbSQLPassThrough
Mi compare il seguente errore:
Istruzione SQL non valida prevista DELETE INSERT .....
su questo link trovate la discussione fatta nel gruppo AS400
http://groups.google.it/group/it.comp.as400/browse_thread/thread/579635fc30385178?hl=it
Grazie per l'attenzione non so più cosa provare..

 Grazie per l'attenzione non so pi� cosa provare..
Strano che obelix non abbia lanciato anatemi questa volta :-)
Per eseguire qualunque comando utilizzo l'ocx di ibm cwbctlr.ocx documentato 
benissimo CWBCTRL.RmtCmdButtonCtrl
con tanto di eventi e gestioni errori nativi as400
Ciao 

 restituisce 0 record
Ho provato con :
CurrentDb.Connect = "ODBC; DSN=MCM"
CurrentDb.Execute "{{CALL PGM(MCMLNAZI/NTE28BCL) PARM('00867'
'01')}}", dbSQLPassThrough
mi dà lo stesso errore.
Cosa intendi in termine di codice specificare che non si tratta di
query?
Ho provato anche con :
'*****LANCIO COMANDO SU AS400*********
                    Dim myAS400 As New cwbx.AS400System
                    Dim myAS400cmd As New cwbx.Command
                    myAS400.Define "AS400"
                    myAS400.UserID = "PROVA"
                    myAS400.Password = "ZBMBBB"
                    Set myAS400cmd.System = myAS400
                    myAS400cmd.Run "CALL PGM(MCMLNAZI/NTE28BCL)
PARM('00867' '01')"
 
'**********************************************************************************************************
Grazie per l'attenzione

 Grazie per l'attenzione
Hai provato l'ocx 


Ho provato anche nel seguente modo:
Dim ConnStr As String
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
Dim cmd As ADODB.command
ConnStr = "Driver={Client Access ODBC Driver (32-bit)};System=ASMIO;"
+ _
                      "User ID=XXXX;Password=YYY"
conn.ConnectionString = ConnStr
conn.Open
'****Fino a qui funziona quindi apre la connessione
Ora dato il comando con sintassi AS400: CALL PGM(MCMLNAZI.NTE28BCL)
PARM('00867' '01')
Com faccio a mandarlo sulla riga di comando di AS400
ho provato così ma mi dà errore:
With cmd
.ActiveConnection = CurrentProject.Connection ' qui dà  errore
.CommandText = "CALL PGM(MCMLNAZI/NTE28BCL) PARM('00867' '01')"
.CommandType = adCmdText
.CommandTimeout = 15
.Execute
End With
Grazie per l'attenzione

 Grazie per l'attenzione
Ciao

     Set  .ActiveConnection = conn
Ciao,
mi dà errore:  Variabile oggetto o variabile del blocco with non
impostata sulla riga (Set cmd.ActiveConnection = conn)
il codice per esteso ora è questo:
Private Sub Comando182_Click()
Dim ConnStr As String
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
Dim cmd As ADODB.command
ConnStr = "Driver={Client Access ODBC Driver (32-bit)};System=ASMIO;"
+ _
                      "User ID=XXXX;Password=YYYY"
conn.ConnectionString = ConnStr
conn.Open
With cmd
Set cmd.ActiveConnection = conn
cmd.CommandText = "CALL PGM(MCMLNAZI/NTE28BCL) PARM('00867' '01')"
cmd.CommandType = adCmdText
cmd.CommandTimeout = 15
cmd.Execute
End With
End Sub
Grazie

 Set cmd.ActiveConnection = conn
Qui non deve darti errore perch� l'oggetto conn � istanziato e per giunta 
aperto come dici.
1) Hai scaricato l'ulimo mdac 2.81?
2) hai trovato nel tuo pc CWBCTRL.OCX. Con questo controllo risolvi il 
problema e gestisci l'esito del comando. Devi aggiungero dai riferimenti vba 
e poi trascinare il controllo nella form


 Grazie
Il controllo � su
C:\Programmi\IBM\Client Access\Shared\cwbctrl.ocx 


Grazie per l'ocx... molto semplice.
Putroppo si blocca anche questo. Se eseguo comandi diretti funziona ma
se chiamo :
CALL PGM(MCMLNAZI/NTE28BCL) PARM('00867' '01') si blocca come al
solito ..questo significa che gli altri tentativi
fatti con cwbx. erano corretti.
Non capisco ancora perchè Set cmd.ActiveConnection = conn  dia errore
Ho provato anche così
Dim cn400 As ADODB.Connection
cn400.Open "Provider=IBMDA400;" & _
"Data source=192.168.1.110;" & _
"User Id=XXXX;" & _
"Password=YYYY"
cn400.Execute "{{CALL PGM(EDPROVA/CLMIC)}}"
'Fino a qui funziona e quindi la connessione è attiva
Dim cmd As ADODB.command
Set cmd.ActiveConnection = cn400 'ERRORE
......
.......
Grazie

 Grazie 


Ti ringrazio e faccio tesoro di quello che mi hai detto.
Sono riuscito finalmente a fare questa la call da VB.
Il problema stava oltre ai vari errori risolti... nell'invio del
parametro società che solitamente è 01
infatti le bolle sono anno-filiale-progressivo dove filiale è 01
invece in questo caso voleva P1 che corrisponde a 01
Grazie ancora!

 Grazie ancora!
Guarda, grazie anche a te, perch� non � molto frequente nei ng trovare 
persone che fanno sapere come � andata.
Sono contento per te che sei riuscito a risolvere il problema.
PS. Hai provato sul tuo as400 l'asincrona?
Giusto per un confronto.
Ciao