Newsgroup: it.comp.lang.visual-basic
Titolo: Ado da errore ma SQL no...

Ciao a tutti ho un problema.
Ho fatto uno script di conversione che converte da file a tabelle in un DB
interbase.
In pratica i file sono di record, quindi ho
Type Rec1
    .....
end type
FRec1 as Rec1
Open PATHFILE & "1.dat" For Random As #1 len=len(FRec1)
Quindi scorro il file e faccio delle insert into nella tabella. (traminte un
adocommand.execute)
In pratica avrò fatto 100 conversioni senza mai problemi, ma da ieri ho
trovato un record che da errore nello script, mentre se COPIO/INCOLLO la
stringa SQL sulla IBOconsole questo record viene inserito normalmente.
Escluderei quindi problemi di integrità o di chiave o di tipi di dati errati
(es. passo una stringa invece di un decimal), in quanto la Console avrebbe
dato errore (come è capitato altre volte), ma volevo sapere come è possibile
che la stessa stringa ADO non la lanci mentre in SQL puro dalla consolo di
interbase vada a diritto.
Se volete incollo la stringa sql.
Grazie :)

Se volete incollo la stringa sql.
Meglio che tu lo faccia. Io un sospetto ce l'ho, ma preferisco prima
vederla.
--
Ciao!
Luca Menegotto

 vederla.
Ecco qua (censuro alcuni dati)
Grazie :)
PS: ho ado 2.8
INSERT INTO FRICETTE ("ANNO", "PROGRIC", "CODRIC", "COGNNOME", "INDIRIZZO",
"CAPCITTA", "SESSO", "USL", "REGIONE", "NOTE", "CODSAN", "CODFISC",
"DATANASCITA", "COMUNENASCITA", "CODREGCOMUNERES","CODISTATCOMUNERES",
"CODREGCOMUNENASCITA","CODISTATCOMUNENASCITA", "REGASSISTENZAPAZ",
"USLASSISTENZAPAZ", "REGMEDICOPRESC", "USLMEDICOPRESC", "NOMEMEDICO",
"CODREGMEDICO", "CODFISCMEDICO", "TIPOMEDICO", "DATAINIZIOPREST",
"DATAFINEPREST", "AMBULATORIO", "MEDICOPREST", "NPRESTAZIONI", "TIPOPREST",
"CODESENZIONEQRICETTA", "CODESENZIONETICKET", "IMPORTOPRIVATO",
"IMPORTOTICKET", "IMPORTOPREST", "FLAGTRASMSPA", "NFATTURA", "DATAFATTURA",
"PAGATO", "IMPORTOBOLLI", "IMPORTOSCONTO", "ESENTEIVA", "MODACCESSO",
"FINALITAPREST", "IMPORTOPRESTAGGIUNTIVE", "COSTOPRODSOMMINISTRATI",
"DOCIDENTITA", "RILASCIATODA", "DATARILASCIO", "SPORT", "SOCSPORTIVA",
"PERIODICITAMESI", "TIPOVISITA", "DATASCADENZA", "IDONEO",
"MOTIVONONIDONEO", "NCARTELLACLINICA", "PROVENIENZA") VALUES ('04', '5221',
Null, 'Cxxxxx Exxx', 'VIA IL xxxx, 4',
 '50060 Pxxxx FI', 'M', '10', '10', '0xx/8xxxxx', '0xxx/6xxxxx',
'Cxxxxxxxxx', '07-19-19xx', 'Rxxxxx RG', '090', '048032', '190', '088009',
'10', '10', '10', '10', 'Lxxxxxx Fxxxxx', '245399', 'Lxxxxxxx', '2',
'03-19-2004', '03-19-2004', '4', Null, '15', 'T', Null, Null, '25.58',
'18.35', '43.93', Null, '5728', '03-19-2004', 'S', Null, '0.03 ', 'S', '01',
Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null,
Null, Null, Null);


No. sospetto infondato. Che errore ti da?
--
Ciao!
Luca Menegotto

 No. sospetto infondato. Che errore ti da?
Mi da il solito (per me :) ) errore di quando da errore con ADO:
**
Errore di run-time '-
2147217900
 (80040e14)':
<Metodo 'Execute' dell'oggetto '_Command' non riuscito
**
Se faccio debug e salto quello poi funziona... fino al prox record che da
errore (dal 5.000 al 7.000 circa).

<Metodo 'Execute' dell'oggetto '_Command' non riuscito
Sibillino.
Il sospetto che avevo - e che rimane abbastanza valido - è che ci sia,
nelle stringhe che compaiono fra i VALUES, una qualche sequenza che al
database non è gradita (un po' come se tu cercassi di mettere un
apostrofo singolo e non un doppio apostrofo in SQL Server). 
Rimane valido perché probabilmente il parser del data provider ADO ci
mette qualcosa di suo.
La cosa migliore che tu possa fare è confrontare due comandi, uno che
va e uno che non va, per capire le differenze.
--
Ciao!
Luca Menegotto

 apostrofo singolo e non un doppio apostrofo in SQL Server).
Allora ho trovato.
E' un Tab che era in un importo, quindi tipo "0.03 |" con |=il tab.
In quel tipo di importo non potevo usare la val e quindi dava errore.
Per trovarlo ho fatto la gestione errore buttando su un file di log SQLStr,
dato che facendo debug.print il tab diventava spazio e non dava piů errore.
Spero sia utile a qualcuno :)
Grazie.