Newsgroup: it.comp.lang.delphi
Titolo: d7, oledb e db2 su as/400

Un saluto a tutti.
Per la serie "nun tengo che 'ffa" (trad. non ho nulla da fare), mi
hanno appioppato questa patata bollente.
In pratica devo semplicemente (!!) scrivere un qlc che legga dati da un
db2 che gira su as400 e li scriva su dei txt.
Sono partito alla carica (tanto è un db, che kakkio...) e sto
tozzando....
1) se vado via odbc, ci mette 2 minuti a connettersi... brrrrrrr
2) se vado via oledb, non mi legge i nomi delle tabelle.
Per essere sicuri ho creato la stringa di connessione a design-time.
Gli ho dato l'ip del server, le credenziali e il test dice che tutto è
a posto.
Ma se da una tadotable che usa la connessione tento di assegnare il
nome della tabella la combo è vuota.
Se provo a impostare la libreria predefinita mi dice che la prop è a
sola lettura.
Se provo a sceglierla dalla combobox durante la creazione della stringa
di connessione, la combo è vuota..
Qualcuno che ha gia usato l'oledb provider per as/400 mi sa dare una
dritta?
A.

nome della tabella la combo č vuota.
Hai provato l'ADODataSet ?

dritta?
L'accesso da Windows a As400 non è velocissimo almeno alla connessione e
con il client di ibm ( che versione usi?), esistono dei driver odbc ed
oledb di terze parti più performanti ma anche abbastanza costosi (come
tutto nel mondo as400 e ibm in generale tralasciando l'aspetto qualità),
non lavoro in java ma ho letto che invece il driver jdbc è molto valido e
performante e anche quello .net non è male, ibm spinge più su java e .net
che win32 nativo.
Per odbc ricordati ti segnalo alcune impostazione che usiamo in azienda
(io lavoro con delphi ma l'azienda sviluppa su as400 e per questo che ne
so qualcosa e se hai qualche domanda scrivi): nella pagina Server -
Avanzate - Modalità di sincronizzazione = Sincronia immediata; pagina
Lingua - Tipo ordinamento = basato su ID lingua,  ID lingua = italiano.
per accedere via odbc cosa usi BDE o sempre ado?
Sia con odbc che con ado per non sbagliare tabella o non accedere a niente
devi impostare TableName = Libreria.NomeFile(Nome tabella per i non
addetti ai lavori) con il punto mi raccomando, forse sbagli qui.
Voglio segnalarti che l'ole db provider fornito da ibm non supporta
(almeno fino alla V5R2) la proprietà MaxRecords quindi quando apri una
tabella scarichi tutti i record, la alternartive sono BDE che noi usiamo
abitualmente che prevede la prorietà nel dbemanager ROWSET SIZE, Ado con
il cursore lato server e se devi fare solo delle letture è la scelta
migliore a mio avviso, o ado con un ClientDataset.
Se devi esportare in file di testo esistono dei componenti anche gratuiti
(per es. nella jvcl) che lo fanno e se il risultato ti aggrada non devi
nemmeno scrivere una riga di codice o quasi (se non per far partire
l'elaborazione).
Ciao
--- posted by geoForum on 
http://www.delphiedintorni.it

ti ringrazio x tutte le info.
Provero ma non in questi giorni che non sono in sede
A.

 Hai provato l'ADODataSet ?
a dire il vero no. provero, anche se credo che se una tado table non 
vede niente mi sembrerebbe un po strano se un adotadaset funzionasse.
Certo, se va bene, non mi lamento di certo.
Solo che in questi gg sono fuori sede e prima di venerdi non posso fare 
un test.
Grazie x le dritte.
A
A.

Ho fatto qualche altro test.
Ho creato una piccola applicazione con 3 TAdoConnection, una x ogni
provider as disponibile:
IBMDARLA
IBMDASQL
IBMDA400
Poi, su suggerimento di Andrea ho usato dei tadodataset.
Ne ho messo uno x ogni connessione.
Poi ho provato a costruire la commandtext.
1) In tutti e 3 i casi l'elenco delle tabelle disponibili è vuoto.
2) A prescindere dal provider non riesco a impostare il catalogo(cioè,
la libreria) predefinita.
Durante la costruzione della stringa di connessione, anche se il test
mi dice che tutto è ok, la combo da cui dovrei poter scegliere è
sempre vuota.
Se poi provo a forzarla a mano dopo da OI, mi caccia il dito medio e mi
dice che la prop è readonly.
Cosi a intuito (quindi questa cose probabilmente è una cazzata...) ho
la sensazione che ci sia qualcosa lato AS che indichi se una libreria
è o no accessibile da un sistema non AS...
Appena ho sottomano qualcuno qui in azienda, lo placco e verifico.
Intanto, se qlc ha qualche dritta addizionale non ci sputo certo sopra.
Lo so, potrei usare ODBC e fregarmene, ma ho la sensazione che in
futuro dovro smanettare spesso con dati presi da AS400 e quindi
preferisco risolvere ora questa faccenda in modo da avere da subito
delle performance ottimizzate.
Ringrazio cmq coloro che mi hanno risposto.
AS

Aggiungo...
Me ne sono fregato di librerie predefinite etc.
Ho usato IDMDARLA e ho messo una select in una adoquery associata alla
connessione.
Risultato: la query va, ma la gettablenames della tadoconnection non mi
restituisce un tubazzo.
A.


Dai tre provider cha hai a disposizione credo tu abbia al V5R3 di Client
Access, comunque anche con versioni precedenti ci sono gli stessi
problemi, impossibilità ad impostare il catalogo iniziale ed ad ottenere
la lista tabelle.
Sinceramente non ho mai impostato ne l'una ne l'altra proprietà ma ho
sempre   specificato a manina sia nelle query che in TableName Libreria.File.
A questo link trovi informazioni su OleDb Provider:
http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/rzaik/rzaikoledbprovider.htm



Nell' altro post ti ho segnalato un link dagli un'occhiata, ho riscontrato
alcune limitazioni del provider ibm, tipo il maxrecords non supportato che
invece viene gestito da costosi driver di terze parti.
Esiste anche un driver dbexpress gratuito che da alcune prove che ho fatto
non è niente male 
http://www.sawatzki.de/download.htm


 non è niente male 
http://www.sawatzki.de/download.htm
Sob! stavo x postare prp quel link.
Ho gia scaricato e installato il driver.
Lunedi faccio 2 prove e vedo, ma da un test rapido sembra molto veloce,
come è logico aspettarsi da dbx.
Tra (), accetta non solo comandi sql ma anche comandi as400 veri e
propri, di quelli che vengono normalmente digitati da riga comando,
avendo come risultato un normale cursore.
Questa presumo sara' utile per bypassare il problema del non
funzionamento di getTableNames, che, come per ado, non restituisce
nulla.
1000 grazie x le tue info e la pazienza.
A.