Witajcie,
Pytanie dość nietypowe. W DataSource ustawiam dwa różne DataSety. Pierwszy to DataSet -> ADOQuery który łączy się do bazy mdb (testowej oczywiście). Po tej operacji istnieje możliwość edycji danych z grida. Wszystko pięknie ładnie działa tak jak chce. W drugim DataSet podpinany jest obiekt klasy:
strict private
FDS: TDataSet;
który otwierany jest nieco inaczej niż zwykły ADOQuery z formy (czyt.
connection.connect; query.open;
)
otóż przekazywany i zwracany jest jako parametr typu var do odpowiedniego interfejsu. Niby w interfejsie do połączenia też jest ADO jednak wglądu w to nie mam i jako parametr var zwrotnie dostaje otwarte FDS:
db.Get(ConnectionId).Open(sql.Text, sql.ParamsIn, nil, FDS);
to powoduje, że dane w DBGrid się pojawiają. Ustawiając
FDS.Edit;
niby możliwa jest edycja pól w gridzie (nawet dla pola z datą otwiera się TDateTimePicker) ale po wybraniu daty, wpisaniu czegoś z palca czy cokolwiek innego dane się nie zapisują mimo iż FDS.State = dsEdit;
. W związku z powyższym pytanie do was jaka jest przyczyna tego, że dane się nie wpisują do DataSet (nie mówię o commicie na bazie bo to inny temat ale o samo wpisane danych do FDS). Czy może w komponencie typu Connection istnieje jakiś mechanizm blokujący?
PS.
```delphi
TDataSource.AutoEdit = True;
PS2. Jak podpiąłem DBNavigatora i próbowałem zrobić Delete rekordu to dostałem komunikat:
Za mało informacji o tabeli bazowej do aktualizacji lub odświeżenia
PS3.
Zapomniałem jeszcze dodać, że w przypadku pierwszego dataseta użyty jest lokalny z formatki komponent i query podpięte pod bazę danych mdb gdzie normalnie jest
select * from tabela
natomiast w drugim przypadku jest to MSSQL i dane zwrócone są poprzez
EXEC [dbo].[sp_NazwaProcedury] :Param1, :Param2, :Param3
Może to jest przyczyna?