Newsgroup: it.comp.lang.delphi
Titolo: aiuto su interbase

Salve a tutti ho il seguente problema:
facendo il porting di un gestionale da paradox a interbase mi si blocca la
compilazione nella seguente riga di lavoro
miatable.fieldbyname('DATA').ASdatetime:=STRTODATE(Maskedit1.TEXT)
mi potreste indicare la sintassi corretta in interbase ?
pietro f.

 compilazione nella seguente riga di lavoro
cioč...?
Bye
A.

scusami
dice 0.0 not a valid timestamp

 miatable.fieldbyname('DATA').ASdatetime:=STRTODATE(Maskedit1.TEXT)
mastedit1.text è una stringa vuota?
Bye
A.

non è una stringa vuota, contiente la data in formato gg/mm/aa

forse sulla tabella il campo su cui vuoi scrivere è di tipo DateTime.
prova a cambiarlo in DATE.
Bye
A.

andando a guardare la tabella (ti premetto che le tabelle sono state portate
col datapump da paradox a interbase) il campo e di tipo timestamp ma non
riesco a modificare il formato

 riesco a modificare il formato
Come hai provato a farlo?
Bye
A.

ho provato ad aprirla col database desktop ma non permette di modificare
e con ibconsole ma anche se modifico non riesco a salvare la modifica fatta

 e con ibconsole ma anche se modifico non riesco a salvare la modifica
fatta
come hai modificato la colonna?
Bye
A.

sono andato ad aprire la tabella e in metadata ho modificato il codice
ma alla fine non salva niente

non va fatto cos'.
Apri una finestra di ISql e digita i seguenti comandi:
ALTER TABLE <NOMETABELLA> DROP <NOMECOLONNA>
ed esegui (ctrl+E)
Poi digita questo:
ALTER TABLE <NOMETABELLA> ADD <NOMECOLONNA> DATETIME
ed esegui (ctrl+E)
Bye
A.

anche facendo in questo modo il campo rimane di tipo timestamp e da lo
stesso errore

> anche facendo in questo modo il campo rimane di tipo timestamp
cioč...
Tu cancelli la colonna dal db
Poi la crei di tipo dateTime
sul database, da ibconsole la vedi ancora come timestamp?
Bye
A.

esatto ma la creo di tipo date

La crei come date e poi da ibconsole la vedi come timestamp????
non è che fai confusione tra cio che vede la tua app e cio che vedi da
IBconsole?
?sta cosa è molto strana.
Bye
A.

no no è proprio cosi' non apro la mia applicazione ma solo ibconsole

non so. mi spiace.
bye
A.

grazie comunque
sei stato iper gentile
ciao

-> esatto ma la creo di tipo date
Non so se è una cavolata ma hai provato a vedere se magari il datapump ti ha 
creato un database con dialect 1 invece che dialect 3? magari è quello che gli 
da fastidio. Non so.
Ciao

, 
m...@home.com
 says...
-> -> esatto ma la creo di tipo date
-> Non so se è una cavolata ma hai provato a vedere se magari il datapump ti ha 
-> creato un database con dialect 1 invece che dialect 3? magari è quello che gli 
-> da fastidio. Non so.
-> Ciao
-> 
Allora ho fatto delle prove creando prima un database con dialect 3 e non ho 
avuto problemi nella conversione dei tipo come invece hai riscontrato tu.
Se invece creo un database con dialect 1 il campo date o time viene sempre 
riconvertito a timestamp, e creando un campo di tipo 'date' da isql mi da un 
warning dicendo che adesso il campo date si chiama timestamp. quindi tratta il 
tuo campo come un timestamp e vedi che non ci saranno problemi, oppure porti il 
tuo db da dialect 1 a dialect 3.
N.B. se non vado errato il tipo di dialetto si sceglie solo alla creazione del 
db. Semmai datti una spulciata alla documentazione di interbase cercando 'set 
sql dialect n'.
Ciao Sha

grazie ora ci provo

scusa mi potresti suggerire la sintassi adatta con il tipo timestamp
usanto la seguente sintassi mi da errore di compatibilita'
miatable.fieldbyname('DATA').ASsqltimestamp:=strtodate(Maskedit1.TEXT)

, 
2fsof...@virgilio.it
 
says...
-> scusa mi potresti suggerire la sintassi adatta con il tipo timestamp
-> usanto la seguente sintassi mi da errore di compatibilita'
-> 
-> miatable.fieldbyname('DATA').ASsqltimestamp:=strtodate(Maskedit1.TEXT)
-> 
Usa StrToDateTime(Maskedit1.text) invece che StrToDate(..)
Ciao Sha

purtroppo non funziona da il seguente messaggio:
[Error] Unit79.pas(462): Incompatible types: 'TSQLTimeStamp' and 'TDateTime'

, 
2fsof...@virgilio.it
 
says...
-> purtroppo non funziona da il seguente messaggio:
-> [Error] Unit79.pas(462): Incompatible types: 'TSQLTimeStamp' and 'TDateTime'
Le cose sono 2
1) se converti il campo interbase in un datetime (sempre che te lo supporti 
tale conversione ma credo proprio di si) gli devi assegnare un valore DateTime 
quindi con la StrToDateTime(..)
2) se converti il campo interbase nel SQLTimeStamp gli devi quindi assegnare un 
valore TimeStamp e lo fai con la funzione StrToSQLTimeStamp
Ciao Sha