Newsgroup: it.comp.lang.visual-basic
Titolo: update file AS400

Salve a tutti, ho questo problema: mi collego al sistema AS400 perchč
devo trasferire i dati di un file TXT in un file AS400, quando cerco di
fare l'update del record quindi dopo aver valorizzato i campi mi va in
eccezione, il testo dell'errore č questo: "il provider dei dati o un
altro servizio ha restituito uno stato E_FAIL."
Ho provato a leggere un file di AS400 e tutto va bene il problema si
presenta solo in add e update.
ecco il codice:
mrsTbAS.LockType = adLockOptimistic
mrsTbAS.CursorLocation = adUseClient
mrsTbAS.CursorType = adOpenKeyset
mrsTbAS.ActiveConnection = mcnDbAS
mrsTbAS.Open ("SELECT * FROM " & "LEONE_DB" & "." & "FTEST")
DoEvents
mrsTbAS.AddNew
mrsTbAS!nomcog.Value = "ciao" 
mrsTbAS.Update
la tabella contiene solo quel campo.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 la tabella contiene solo quel campo.
Non ho mai fatto update o insert passando attraverso i .Value del 
recordset.
Potresti però, a parte tentare di cambiare il LockType, eseguire delle 
operazioni di Insert attraverso Sql direttamente su DB2 (che è poi il 
modo normalmente consigliato per queste cose, non solo verso DB/2 ma 
anche su altri dbms).
Ciao
Alberto
-- 
Ma noi no

Albe V° ha scritto:
(snip)
C'entra nulla, ma già che sei qui volevo ringraziarti per un tuo "antico"
post, con il quale spiegavi come ottenere una query contenente il
"progressivo" del record.
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
Se i tempi non chiedono la tua parte migliore, inventa altri tempi. 
(Baolian, libro II, vv. 16-17)
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 "progressivo" del record.
Che poi, visto che usi Sql-Server, potresti farlo anche in maniera 
molto più easy...
(scrivo a braccio...):
SET NOCOUNT ON
IF OBJECT_ID('tempdb.dbo.#TB_TMP') is not null DROP TABLE dbo.#TB_TMP
CREATE TABLE dbo.#TB_TMP
(CAMPO1 CHAR(10), CONTATORE NUMERIC(18,0) IDENTITY)
INSERT INTO DBO.#TB_TMP (CAMPO1)
SELECT KAFOCOD FROM TB_AFO ORDER BY KAFODES
SELECT * FROM DBO.#TB_TMP
Tutto inserito in una unica querystring, et voilà


 SELECT * FROM DBO.#TB_TMP
Ehm... più easy in che senso?
Cioè: posto che non ho capito come funzionano nè questa nè la precedente,
l'altra mi pareva comunque più breve (da scrivere, se non altro) :-)


 l'altra mi pareva comunque più breve (da scrivere, se non altro) :-)
Quesa è più copy&paste, e non alcuna limitazione (l'altra, a meno che 
non stiamo parlando di cose diverse, richiedeva che il campo di 
ordinamento fosse  anche univoco).
La vecchia ha il vantaggio di andare su ogni db.
Esplicito:
SET NOCOUNT ON
IF OBJECT_ID('tempdb.dbo.#TB_TMP') is not null DROP TABLE dbo.#TB_TMP
CREATE TABLE dbo.#TB_TMP
Le tre righe qui sopra non vanno modificate, vanno bene così.
(CAMPO1 CHAR(10), CONTATORE NUMERIC(18,0) IDENTITY)
Qui basta aggiungere l'elenco dei campi che si vogliono estrarre.
INSERT INTO DBO.#TB_TMP (CAMPO1)
L'elenco dei campi, meno che il contatore, va ripetuto qui.
SELECT KAFOCOD FROM TB_AFO ORDER BY KAFODES
Questa è banalmente la query che faresti se non ti servisse il 
progressivo
SELECT * FROM DBO.#TB_TMP
Questa va inserita così com'è.
Ciao


 Esplicito:
Grazie.
Adesso non mi serve, ma è confortante sapere che, se mai dovessi averne
bisogno, basta una ricerchina su google e via...


 Questa va inserita così com'è.
Emh... Correzione:
SELECT * FROM DBO.#TB_TMP ORDER BY CONTATORE ASC


risolto!
mrsTbAS.CursorLocation = adUseServer
