E quindi? Se il campo della tabella è di 50 varatteri NON puoi ottenere 150 ! Non ha senso !
E quindi? Se il campo della tabella è di 50 varatteri NON puoi ottenere 150 ! Non ha senso !
ci provo a spiegarmi...
in fase di programmazione stabilisco che il campo FIELD1 della tabella TABELLA1, che è un TESTO da 50,
mi serve da 150 e con ACCESS modifico l'MDB, quindi nella ADOTABLE modifico il SIZE e il DISPLAYWIDTH a 150,
e tutto funziona..
poi una volta installato l'exe nella rete di lavoro, vorrei che una routine nel programma individuasse la tabella
in questione nell'mdb reale e, se le dimensioni del campo fossero ancora 50, le modificasse in 150.
non so essere più chiaro di così
Va be, non ci capiamo.
Quando esegui il programma al lavoro, la dimensione del campo lo leggi dall'ADOTable (con la proprietà Size) e viene restituita la lunghezza del DB CHE STAI UTILIZZANDO AL LAVORO, non quello che hai utilizzato prima. Quindi ottieni 50 se il campo della tabella è lunga 50.
La dimensione impostata nel file mdb di casa NON c'entra nulla con quella del lavoro, questa viene LETTA dal DB con cui sei collegato in quel momento.
ci capiamo... mancava un passaggio che io non ritenevo fondamentale :
in fase di progettazione io pre-carico i campi nelle ADOTAble, e questo già mi bloccava l'applicazione perchè trovava un valore diverso !!!
Quindi mi basterà creare 'at run-time' un oggetto ADOTable collegarlo alla tabella e mi ricavo tutte le info che mi servono....
grazie mille Antonio, sei stato prezioso
... e quindi dopo aver creato un oggetto TADOTAble:
ADOTAble1.TableName := 'Dati Contratto'; ADOTAble1.Open; if (ADOTAble1.FieldByName('Richieste particolari') As TstringField).Size <> 150 then begin ADOCommand1.CommandText :='ALTER TABLE [Dati Contratto] ALTER COLUMN [Richieste particolari] CHAR(150)'; ADOCommand1.Execute; CtrlAgg := True; end;...e funziona perfettamente.
grazie ancora
Ma era ovvio (per me) che l'oggetto doveva essere caricato a runtime! Ecco dove non ci capivamo ...
Va beh ... meglio così