Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Modifica tabella AS400
lunedì 11 aprile 2005 - 16.43
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
BiBi
Profilo
| Junior Member
158
messaggi | Data Invio:
lun 11 apr 2005 - 16:43
Sto creando un'applicazione VB.NET che deve aggiornare delle tabelle su AS400.
Io ho una versione di Client Access 5.2.
Ho creato un DSN di sistema utilizzando il Driver Client Access ODBC.
Nella mia applicazione ho utilizzato come connessione la seguente istruzione:
Dim cn_AS400 As Odbc.OdbcConnection = New Odbc.OdbcConnection("DSN=nome_DSN;UID=mio_uid;PWD=mia_pwd;Driver={iSeries Access ODBC Driver};")
Quando vado a leggere le tabelle funziona tutto correttamente, mentre se cerco di aggiornare i dati mi dà questo errore: "Generazione SQL dinamica per UpdateCommand non supportata per un selectCommand che non restituisce colonne modificabili."
Se creo un database Access con le tabelle collegate utilizzando il DSN di cui sopra;
creo un nuovo DSN collegandolo a questo database Access;
collego la mia applicazione a questo nuovo DSN;
tutto funziona correttamente.
Dato che non volevo assolutamente appoggiarmi ad Access, volevo sapere che cosa ho sbagliato.
Grazie mille!!!
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
lun 11 apr 2005 - 23:26
Mi sembra che l'errore sia chiarissimo.
Nel comando di select (Select ....) che hai utilizzato per generare il dataadapter hai inserito un join oppure un group by oppure estrai più di una tabella (ci sono di sicuro altri casi).
Sei in una situazione per la quale il wizard non riesce a creare un comando di update.
Anche quando apri una tabella senza chiave mi sembra che si possa incorrere nello sesso problema.
Per risolvere l'ambiguità devi estrarre una sola tabella che abbia una chiave primaria senza join o group by, ecc.
L'alternativa è di scrivere la tua query di update (e di insert / delete probabilmente) direttamente inserendo il comando ed i relativi parametri dove il commandbuilder non riesce ad arrivare e cioè i il commandtext dell'updatecommand/deletecommand/insertcommand del dataadapter.
BiBi
Profilo
| Junior Member
158
messaggi | Data Invio:
mar 12 apr 2005 - 10:02
Ti ringrazione per la tua risposta.
Il DataAdapter contiene una sola tabella che ha una chiave primaria.
Ho anche provato ad effettuare l'aggiornamento utilizzando una query di UPDATE con un Command, ma l'errore mi si ripropone ugualmente.
Quello che non riesco a capire è perchè se attivo il DNS del database Access che ha collegate le stesse tabelle di AS400 il tutto mi funziona correttamente.
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mar 12 apr 2005 - 10:17
L'errore probabilmente allora è nella stringa di connessione
BiBi
Profilo
| Junior Member
158
messaggi | Data Invio:
mar 12 apr 2005 - 11:25
La mia stringa di connessione è la seguente:
Dim cn_AS400 As Odbc.OdbcConnection = New Odbc.OdbcConnection("DSN=nome_DSN;UID=mio_uid;PWD=mia_pwd;Driver={iSeries Access ODBC Driver};")
è quella che ho trovato all'interno dei vari articoli trovati su internet.
Come devo configurarla?
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 12 apr 2005 - 23:16
Prova ad utilizzare questa:
"Driver={Client Access ODBC Driver (32-bit)};System=NOME_SISTEMA;Uid=UTENTE;Pwd=PASSWORD"
ciao
david
BiBi
Profilo
| Junior Member
158
messaggi | Data Invio:
mer 13 apr 2005 - 11:08
Ho provato, ma anche in questo modo mi restituisce lo stesso errore.
Ho però un dubbio: dato che riesco a leggere i dati sulla tabella, ma non riesco ad aggiornarla, non vorrei che l'ODBC non riesca a portarmi la chiave primaria della tabella, e così .NET mi restituisce l'errore.
E' possibile con VB.NET aggiornare delle tabelle senza una chiave primaria?
Grazie mille per le vostre risposte.
Ciao a tutti!!!
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mer 13 apr 2005 - 11:48
Evidentemente era quello che ti avevo detto.
Devi intervenire manualmente dopo la definizione del dataadapter
Il wizard andrà in errore, PRIMA di generare il dataset devi andare ad impostare sul dataadapter le proprietà di tutti i comandi select / insert / update / delete.
Per quanto riguarda update e delete devi fare in modo che sia aggiornato e cancellato un solo record.
Nel caso sulla datatable non siano importate le chiavi puoi intervenire tu mettendole uguali a quelle già impostate su as400
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !