Newsgroup: it.comp.lang.delphi
Titolo: Urgenete IndexName; nn so piu dove sbattere la testa

Scusate se riposto ma nn so piu dove cercare, tra l'altro ho l'urgenza di
completare il prog.
Grazie Ancora e scusatemi per il repost
Antonio.
ciao a tutti, il mio programma gestisce due tabelle in master detail clienti
e ordini e mi piacerebbe visualizzare gli ordini ordinati per data, premetto
che uso bde e tabelle paradox a tale scopo ho pensato fosse il caso definire
un indice sulla tabella ordini che dipende da clienti, e dopo l'inserimento
di un record scrivo :
  MiaTabella.IndexName := 'MioIndice':
e mi rilascia l'errore :
Invalid value for field 'Data Ordine'
Tengo a precisare che ho provato a svuotare la tabella e che per altre
tabelle funziona.

   MiaTabella.IndexName := 'MioIndice':
Perchè non usare una Tquery per visualizzare i dati ?
Tipo
SELECT O.*, C.* FROM ORDINI O
INNER JOIN CLIENTI C ON C.CODICECLIENTE = O.CODICECLIENTE
ORDER BY O.DATAORDINE
Giulio

 Invalid value for field 'Data Ordine'
questo errore lo hai solo se cambi l'indice?
A

 ORDER BY O.DATAORDINE
se non ricordo male, le query su pradox non usano gli indici.
Ergo, a parità di numero di records, la ttable dovrebbe essere molto + 
veloce.
Magari se hai pochi dati non te ne accorgi, ma se i dati sono tanti...
A


Ho provato ma nn mi conviene per come ho impostato il prog!!!
Non devo gestire grossi archivi quindi ho preferito nn usare le query o cmq
sarà una cosa che faro successivamente!
Cmq nn mi va neanche con la tquery, infatti
premetto che ho assegnato all'oggetto tquery un datasource in cui caricare i
dati e alla griglia che deve visualizzare i dati ho assegnato lo stesso
datasource!!!
query.close;
query.sql.add('select * from TOrdini.db where codcliente =
'''+TOrdini.FieldByName('codcliente').AsString+''' Order By Data');
query.Open;
se nn ci sono errori  di sintassi questa cosa nn mi funziona

 ha scritto nel messaggio
news:cbos5p$1ds$1...@newsreader1.mclink.it...

Io L'indice lo creo a design time con db desktop
poi lo attivo dopo l'inserimento nella tabella!!
ovvero
Inserimento;
TOrdini.IndexName := 'DataInd';
ho provato anche  fare
TOrdini.Active := False
TOrdini.Masterfield := '';
TOrdini.IndexName := 'DataInd'
TOrdini.Active := True;
TOrdini.Masterfield := 'codcliente';
ma niente!!!
L'errore è sempre lo stesso!!!

 TOrdini.IndexName := 'DataInd';
e vedi se la registrazione sulla tabella è corretta.
A

 ha scritto nel messaggio
news:cboton$1u7$1...@newsreader1.mclink.it...

In che senso, cosa intendi per registrazione sulla tabella?

Mi sembra di capire (ma posso anche sbagliare) che se esite una relazione
Master-Detail l'indice definito a design-time viene 'buttato'. Poi è
sostituito da quello definito nella relazione Master-Detail nella Proprietà
MasterField del Dataset Detail.
Ciao
Mario
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto nel messaggio
news:151Z26Z203Z31Y1...@usenet.libero.it...

Si probabilmente sara cosi, ma come si risolve il problema?

 > In che senso, cosa intendi per registrazione sulla tabella?
quello che sinteticamente indicato come "inserimento" nel tuo post 
presumo scriva uno o + records su qualche tabella.
Ergo, dopo la registrazione, usa dbdesktop per vedere cosa è scritto sul 
record
A

 ha scritto nel messaggio
news:cbp26u$3fn$2...@newsreader1.mclink.it...

No scrivo un solo record ogni volta che faccio un inserimento sulla tabella
che vorrei fosse ordinata.

 che vorrei fosse ordinata.
ok, antonio.
assodato questo, il record viene registrato correttamente? tutti i campi 
sono valorizzati nel modo giusto?
Cosa succede se non usi quell'indice? hai comunque quale errore?
A

 Cosa succede se non usi quell'indice? hai comunque quale errore?
Se uso l'indice ottengo l'errore se non lo uso va tutto bene.
Cmq anche se penso nn c'entri mi sono ricordato che nella tabella sull
evento OnCalcField valorizzo un campo calcolato che usa la mia data ma che
lo legge soltanto nn la modifica!!!

 lo legge soltanto nn la modifica!!!
disattiva e riprova
A

 ha scritto nel messaggio
news:cbp4m5$4v1$1...@newsreader1.mclink.it...

Ora nel mio codice la stringa
Tordini.IndexName := 'Data';
nn c'č piu!!
Questa operazione l'ho fatta piu volte come anche quella di eliminare e
ricreare l'indice secondario.

 Magari se hai pochi dati non te ne accorgi, ma se i dati sono tanti...
Lo so , ma vista l'urgenza era una possibile "patch" ...
Io comunque le usai (da tempo sono un "firebista") senza particolari
problemi (archivi non troppo grossi 3000/5000 records).
Giulio


Cosa vuole dire non funziona ? Non restituisce record , dà un errore ,
inchioda il pc , restituisce dati non corretti , fa uscire fiamme dalle
porte usb ?   :-)
Hai assegnato alla query l'alias bde o il percorso tabella ?
E se provi a farla nel database explorer ?
Giulio

 E se provi a farla nel database explorer ?
Non c'ho provato;
Ma tengo a sottolineare che nn mi interessa un approccio di questo tipo.
Grazie
Antonio.

oggi non riesco a spiegarmi com vorrei...
Test 1:
disattiva l'evento onCalcFields
riattiva l'indice
fai degli inserimenti e riprova.
Cosa succede?
Funziona?
Vengono fuori errori?
Ottieni cio che volevi realizzare?
Test 2:
riattiva l'evento OnCalcFields
lascia l'indice non attivo
fai degli inserimenti e riprova.
Cosa succede?
Funziona?
Vengono fuori errori?
Ottieni cio che volevi realizzare?
test 3:
riattiva onCalcField e l'indice
fai degli inserimenti e riprova.
Cosa succede?
Funziona?
Vengono fuori errori?
Ottieni cio che volevi realizzare?
A

 ha scritto nel messaggio
news:cbp7gr$6jn$1...@newsreader1.mclink.it...

Non va, o meglio, fin quando l'indice è disattivato tutto funziona appena
attivo l'indice mi da quell'errore questo per tutti i test che mi hai
proposto.

lascia l'indice sempre attivo e vedi cosa succede
A

 
ciao
credo che il problema sia il cambio di indice che tu esegui suppongo
prima del post,
la relazione ordini clienti perchè funzioni presuppone che tu abbia
creato un indice
sulla tabella ordini per cliente, l'automatismo (master detail)
inserisce
poi nella tabella ordine campo cliente, il valore presente nella tabella
clienti,
diciamo che si tratti di un codice alfanumerico, ora tu (credo) cambi
l'indice
con uno data (quindi di tipo datetime) e poi salvi, il programma a
questo punto
tenta di scrivere un dato alfanumerico in un campo di tipo data e quindi
ti da
l'errore che hai descritto.
Tra l'altro questa operazione (il cambio di indice) ti fà perdere la
relatione master detail
potresti provare a creare un indice multiplo cioè composto dal campo
cliente + data non sono
sicuro però che questo possa funzionare.
Ciao
Micky
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:1238a953e5373e644f6...@mygate.mailgate.org...

Provero a fare come dici ma cmq la data che vado a salvare è un intero che
poi a runtime con un campo calcolato la visualizzo come data ma in ogni modo
nell'evento oncalcfield la data nn viene modificata.