podkasetnik
Ученик
- Регистрация
- 7 Май 2008
- Сообщения
- 2
- Реакции
- 0
- Баллы
- 0
Люди добрые помогитеб слезно умоляю бд Access в Dephi
есть БД Access2000 называется temper и в ней таблица Table1 в ней поля: Temperatyra(числовое), поле DateAndTime(дата/время) и Key(счетчик) . я ее заразу связал со своей программой в Delphi так: создал datamodule2 и через Adotable1 и datasourse1 подключил бд к форме и DBGrid1.задание: необхрдимо, чтобы каждую секунду значение y=sin(x) заносить в поле Temperatyra а дату и время в поле DateAndTime. конкретно у меня проблемы с самим синтаксисом занисения в бд
вот прога
var x:integer;
y:real;
//...........выход...................................................................
procedure TForm1.Button1Click(Sender: TObject);
begin
close
end;
//..............................................................................
procedure TForm1.FormCreate(Sender: TObject);
begin
x:=0;
Label1.Caption:='';
dbchart1.Series[0].clear;
Timer1.Enabled := False;
Timer2.Enabled := True;
end;
//..............................................................................
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DBGrid1.Columns.SaveToFile(ExtractFilePath(Application.ExeName)+'grid.bat');
end;
//..............................................................................
procedure TForm1.FormShow(Sender: TObject);
begin
if FileExists(ExtractFilePath(Application.ExeName)+'grid.bat') then
DBGrid1.Columns.LoadFromFile(ExtractFilePath(Application.ExeName)+'grid.bat');
end;
//.........время на форме.....................................................................
procedure TForm1.Timer2Timer(Sender: TObject);
var TD2: string;
begin
DateTimeToString(TD2,'dd/mm/yyyy hh:nn:ss',Now);
Label1.Caption:= TD2;
end;
//..............................................................................
procedure TForm1.Timer1Timer(Sender: TObject);
var TD: string;
begin
y:= 100*sin(x);
y:=(round(y*1000))/1000;
x:= x+10;
DateTimeToString(TD,'dd.mm.yyyy hh:nn:ss',Now);
dbchart1.Series[0].AddXY(TDateTime(Now),y,'',clred);
writeln(f,TD,'|',y); // caienu a oaee
////////Table////////////////////////
все ниже перечисленное использовал для того чтобы занести значения в бд но ничего не получилось! что не так?
выдает ошибку:
Progect Progect1.exe raised exception class EOleException with message 'несоответствие типов данных'
DataModule2.ADOTable1.Last; // конец таблицы
{1} DataModule2.ADOTable1.edit;
DataModule2.ADOTable1.FieldByName('Temperatyra').NewValue:=y; // y:= 100*sin(x);
DataModule2.ADOTable1.FieldByName('DateAndTime').NewValue:=TDateTime(Now);//дата и время в формате dd.mm.yyyy hh:nn:ss
или так пробовал
{2} DataModule2.ADOTable1.FieldValues['Temperatyra'] := y;
DataModule2.ADOTable1.FieldValues['DateAndTime'] := TDateTime(Now);
или так пробовал
{3}
DataModule2.ADOTable1.Append;//aiaaaeyou
DataModule2.ADOTable1.Insert; //anoaaea
DataModule2.ADOTable1.FieldsByName('0').AsReal:=y;//caienaee a iiea oaaeeou cia?aiea 50 a?aaonia
DataModule2.ADOTable1.FieldsByName('1').AsDateTime:=TDateTime(Now);
или так пробовал
{4}
DataModule2.ADOTable1.AppendRecord([y,TDateTime(Now)]);
DataModule2.ADOTable1.Post;
DataModule2.ADOTable1.next;
end;
и все никак не пойму где ошибка
//..............................................................................
procedure TForm1.Button2Click(Sender: TObject);
begin
if Timer1.Enabled then
begin
Timer1.Enabled := False;
Button2.Caption := 'Пуск';
DataModule2.ADOTable1.Close;
end
else begin
Timer1.Enabled := True;
Button2.Caption := 'Стоп';
DataModule2.ADOTable1.Open;
end;
end;
end;
end.
есть БД Access2000 называется temper и в ней таблица Table1 в ней поля: Temperatyra(числовое), поле DateAndTime(дата/время) и Key(счетчик) . я ее заразу связал со своей программой в Delphi так: создал datamodule2 и через Adotable1 и datasourse1 подключил бд к форме и DBGrid1.задание: необхрдимо, чтобы каждую секунду значение y=sin(x) заносить в поле Temperatyra а дату и время в поле DateAndTime. конкретно у меня проблемы с самим синтаксисом занисения в бд
вот прога
var x:integer;
y:real;
//...........выход...................................................................
procedure TForm1.Button1Click(Sender: TObject);
begin
close
end;
//..............................................................................
procedure TForm1.FormCreate(Sender: TObject);
begin
x:=0;
Label1.Caption:='';
dbchart1.Series[0].clear;
Timer1.Enabled := False;
Timer2.Enabled := True;
end;
//..............................................................................
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DBGrid1.Columns.SaveToFile(ExtractFilePath(Application.ExeName)+'grid.bat');
end;
//..............................................................................
procedure TForm1.FormShow(Sender: TObject);
begin
if FileExists(ExtractFilePath(Application.ExeName)+'grid.bat') then
DBGrid1.Columns.LoadFromFile(ExtractFilePath(Application.ExeName)+'grid.bat');
end;
//.........время на форме.....................................................................
procedure TForm1.Timer2Timer(Sender: TObject);
var TD2: string;
begin
DateTimeToString(TD2,'dd/mm/yyyy hh:nn:ss',Now);
Label1.Caption:= TD2;
end;
//..............................................................................
procedure TForm1.Timer1Timer(Sender: TObject);
var TD: string;
begin
y:= 100*sin(x);
y:=(round(y*1000))/1000;
x:= x+10;
DateTimeToString(TD,'dd.mm.yyyy hh:nn:ss',Now);
dbchart1.Series[0].AddXY(TDateTime(Now),y,'',clred);
writeln(f,TD,'|',y); // caienu a oaee
////////Table////////////////////////
все ниже перечисленное использовал для того чтобы занести значения в бд но ничего не получилось! что не так?
выдает ошибку:
Progect Progect1.exe raised exception class EOleException with message 'несоответствие типов данных'
DataModule2.ADOTable1.Last; // конец таблицы
{1} DataModule2.ADOTable1.edit;
DataModule2.ADOTable1.FieldByName('Temperatyra').NewValue:=y; // y:= 100*sin(x);
DataModule2.ADOTable1.FieldByName('DateAndTime').NewValue:=TDateTime(Now);//дата и время в формате dd.mm.yyyy hh:nn:ss
или так пробовал
{2} DataModule2.ADOTable1.FieldValues['Temperatyra'] := y;
DataModule2.ADOTable1.FieldValues['DateAndTime'] := TDateTime(Now);
или так пробовал
{3}
DataModule2.ADOTable1.Append;//aiaaaeyou
DataModule2.ADOTable1.Insert; //anoaaea
DataModule2.ADOTable1.FieldsByName('0').AsReal:=y;//caienaee a iiea oaaeeou cia?aiea 50 a?aaonia
DataModule2.ADOTable1.FieldsByName('1').AsDateTime:=TDateTime(Now);
или так пробовал
{4}
DataModule2.ADOTable1.AppendRecord([y,TDateTime(Now)]);
DataModule2.ADOTable1.Post;
DataModule2.ADOTable1.next;
end;
и все никак не пойму где ошибка
//..............................................................................
procedure TForm1.Button2Click(Sender: TObject);
begin
if Timer1.Enabled then
begin
Timer1.Enabled := False;
Button2.Caption := 'Пуск';
DataModule2.ADOTable1.Close;
end
else begin
Timer1.Enabled := True;
Button2.Caption := 'Стоп';
DataModule2.ADOTable1.Open;
end;
end;
end;
end.