PDA

Visualizza la versione completa : [ Delphi ] ADO Table


piccaweb
06-07-2002, 15:19
Per inserire un record in una tabella del Db utilizzo questa sintassi:


Clienti.Insert;
Clienti['Nome'].AsWideString:=Contact.FirstName;
Clienti.Post;


Ma non funziona, come mai?
Mi restituisce come errore:'Variant does not references an automation object' nella riga in cui assegno il valore nel campo.
Ho provato a cambiare WideString con String ma non funziona comunque.
Contact.FirstName Ú una WideString...

:ciauz:

alka
07-07-2002, 23:45
So che con ADO ci sono delle particolari restrizioni alle azioni che puoi eseguire su una tabella (Recordset), a seconda del tipo di cursore che intendi utilizzare per scorrere la tabella. Prova a consultare la Guida in linea di Delphi relativa al componente ADOTable; magari tenta di modificare la proprietÓ CursorType al valore ctDynamic...

Come diceva Martufello: "di pi¨ 'nin so!" :p
Ciao! :ciauz:

piccaweb
08-07-2002, 01:08
Ho giÓ controllato e mi sono accorto di usare ADO con un Recordset di tipo Statico , ho provato a cambiare l'impostazione mettendolo Dinamico ma appena si attiva la tabella ritorna automaticamente a Statico!
Sono sicuro che l'errore Ú cuastoda questa inesattezza, ma non riesco a modificare l'impostazione!

alka
08-07-2002, 10:49
Purtroppo non ho altre informazioni a riguardo. Per tentare di risolvere il problema, prova ad eseguire l'inserimento utilizzando un ADOCommand attraverso uno statement SQL, invece di effettuare la Insert direttamente sulla ADOTable.

Ciao! :ciauz:

piccaweb
08-07-2002, 12:14
Anche a me Ú venuta la stessa idea ieri era... e per fortuna funziona!
Cmq devo ancora capire come mai Delphi cambia in automatico lo stato del RecordSet.
Mahhh




:quote:

alka
08-07-2002, 12:57
Il motivo per il quale Delphi forza il valore della proprietÓ nella ADOTable potrebbe anche derivare dalla modalitÓ con cui hai aperto la connessione dati. Ad esempio, se decidi di aprire una connessione in sola lettura, Ŕ inutile specificare un cursore in grado di modificare un record se la connessione stessa non lo permette. Prova a controllare la proprietÓ Mode dell'oggetto ADOConnection che hai impigato per effettuare la connessione alla base dati.

Ciao! :ciauz:

piccaweb
08-07-2002, 13:34
Avevo giÓ controllato la modalitÓ di apertura della Tabella e addiruttura del DB, ma entrambi sono impostati sia per la scrittura che per la lettura.

:quote:

alka
08-07-2002, 13:37
Questi sono quelli che (dalle mie parti) chiamiamo "poltergeist"! :p

Loading