Вы можете использовать этот код в качестве примера. Я предположил, что поля [Дата] и [Год] имеют тип NVARCHAR (4). Я также предположил, что вы уже настроили соединение с базой данных FConn.
. Для воспроизведения этого примера вам понадобится Form1 с DBGrid1, DateTimePicker1, Edit1, ADOQuery1, ADOQuery2, DataSource1 и двумя кнопками: Button1 для вставки новой записи иButton2 для обновления существующих.
Свяжите свой DBGrid1 с ADOQuery1 через DataSource1.
uses
ADODB, DB, DateUtils;
type
TForm1 = class(TForm)
...
private
{ Private declarations }
FConn: TADOConnection;
FYear: Integer;
FMonth: Integer;
FDay: Integer;
FYearUpd: String;
...
const
SQL1 = 'INSERT [Dbf] ([Date], [Year]) VALUES (''%s%s'', ''%s'')';
SQL2 = 'UPDATE [Dbf] SET [Year] = ''%s'' WHERE Year = ''%s''';
procedure TForm1.FormCreate(Sender: TObject);
begin
// FConn connection initialization
ADOQuery1.Connection := FConn;
ADOQuery2.Connection := FConn;
ADOQuery1.SQL.Text := 'SELECT * FROM Dbf';
ADOQuery1.Open;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FYear := YearOf(DateTimePicker1.Date);
FMonth := MonthOf(DateTimePicker1.Date);
FDay := DayOf(DateTimePicker1.Date);
// Inserting a new record.
ADOQuery2.SQL.Text := Format(SQL1, [IntToStr(FDay), IntToStr(FMonth), IntToStr(FYear)]);
ADOQuery2.ExecSQL;
// Refreshing the DBGrid.
ADOQuery1.Close;
ADOQuery1.Open;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
FYear := YearOf(DateTimePicker1.Date);
FYearUpd := Trim(Edit1.Text);
// Updating existing records.
ADOQuery2.SQL.Text := Format(SQL2, [FYearUpd, IntToStr(FYear)]);
ADOQuery2.ExecSQL;
// Refreshing the DBGrid.
ADOQuery1.Close;
ADOQuery1.Open;
end;