Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];

Вниз

Чайницкий вопрос про добавление данных   Найти похожие ветки 

 
Kreyl   (2005-07-01 13:08) [0]

Задача выглядит так. Есть база данных. В ней таблица с рядами чисел a и b. Нужно создать таблицу со столбцом с, куда будет вноситься результат математической операции над а и и (ну, например, с=а+b).

Дело в том, что в книжках все примеры предполагают ввод данных в таблицу руками пользователя, через связанные с таблицей компоненты. А нужно по нажатию кнопки считать данные, выполнить вычисления, создать таблицу и внести в нее результаты. И потом сказать пользователю "ага" :-) То есть, выводить данные на форму не надо.

У меня возник затык с добавлением в существующую таблицу строк с полями с нужными значениями.

Я занес числа в Access 2003, зарегистрировал базу данных через ODBC. Версия DELPHI - 8.


 
Digitman ©   (2005-07-01 13:14) [1]


> У меня возник затык


ну, рассказывай ..


 
Dell3r ©   (2005-07-01 13:27) [2]

>А нужно по нажатию кнопки считать данные, выполнить вычисления,
На сколько я понимаю из сущесвующей таблицы

>создать таблицу и внести в нее результаты.
Зачем создавать дополнительную таблицу?

Берешь DBEdit1, DBEdit2, и DBEdit3
К первому привязываешь первый столбец ко второму второй к третьему третий
Потом
IntToStr(DBEdit3.Text):=StrToInt(DBEdit1.Text)+StrToInt(DBEdit2.Text);
Потом сохраняешь таблицу и ВСЁ.


 
Kreyl   (2005-07-01 13:44) [3]

2 Dell3r:
>А нужно по нажатию кнопки считать данные, выполнить вычисления,
На сколько я понимаю из сущесвующей таблицы

Да, совершенно верно.

>создать таблицу и внести в нее результаты.
Зачем создавать дополнительную таблицу?

Чтобы потом по ней искать.
Я поначалу создал ее в аксессе руками.

IntToStr(DBEdit3.Text):=StrToInt(DBEdit1.Text)+StrToInt(DBEdit2.Text);
Потом сохраняешь таблицу и ВСЁ.

Это приведет к образованию в DBEdit3 сразу всего столбца с результатами? То есть, перебирать исходную таблицу по строкам нет необходимости?
Если так, то как реализовать операцию c[i]=a[i]+a[i+1]?
Спасибо!


 
Sergey13 ©   (2005-07-01 13:49) [4]

2 [3] Kreyl   (01.07.05 13:44)
ДБЕдиты тут нафиг не нужны (это когда руками долбишь надо). А вот про циклы тебе почитать нужно.


 
Kreyl   (2005-07-01 14:05) [5]

2 Digitman:

 private
   MatrixBase  : BindingManagerBase;
   deltaBase   : BindingManagerBase;
   t0      : integer;
   delta0  : currency;
...
procedure TWinForm.Button3_Click(sender: System.Object; e: System.EventArgs);
var
 n, i          : integer;
 Ynow, Ybefore : Double;
 deltanow      : currency;
begin
 // clear table
 n:=deltaBase.Count;
 StatusBa.Panels[0].Text := n.ToString;
 if n>0 then
   for i:=1 to n do
   begin
     deltaBase.RemoveAt(0);
     Adapterd.Update(DataSet1, "spread_deltaI");
   end;
 StatusBa.Panels[0].Text := "aga";
 // convert to deltas
 n:=deltaBase.count;
 ProgressBar1.Maximum := n;

 for i:=1 to n do
 begin
   // Add new Row
   deltaBase.AddNew;
   try
     Adapterd.Update(DataSet1, "spread_deltaI");
   except
     on e : exception do
       MessageBox.Show(e.Message);
     end;

   //Calculate delta
   Ynow    := Convert.ToDouble(DataSet1.Tables[0].Rows[i].Item[1]);
   Ybefore := Convert.ToDouble(DataSet1.Tables[0].Rows[i-1].Item[1]);
   deltanow:= Ynow+Ybefore;

   // Edit added row
 n:=deltaBase.Count-1;
 deltaBase.Position := n;
   DataSet1.Tables[1].Rows[i-1].BeginEdit;
   DataSet1.Tables[1].Rows[i-1].Item[0]:=deltanow;
   DataSet1.Tables[1].Rows[i-1].EndEdit;
   try
     Adapterd.Update(DataSet1, "spread_deltaI");
   except
     on e : exception do
       MessageBox.Show(e.Message);
     end;

   ProgressBar1.Increment(1);
 end;
end;

Меня не оставляет уверенность, что я всё делаю через задницу. Увы мне.


 
Sergey13 ©   (2005-07-01 14:17) [6]

2[5] Kreyl   (01.07.05 14:05)
Вот так примерно не проще?
Table1.First;
while not table1.eof do
begin
 table2.Append;
 Table2.FieldByName("C").asFloat:=Table1.FieldByName("A").asFloat+Table1.FieldByName("B").asFloat;
 Table2.Post;
 table1.next;
end;



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.038 c
14-1121405345
rentgen
2005-07-15 09:29
2005.08.07
Глюки форума или глюки у меня


1-1121981919
Тестер1
2005-07-22 01:38
2005.08.07
С чем может быть связан Виолэйшен Акссэс в ScreenToClient ?


14-1121674605
начинающий10
2005-07-18 12:16
2005.08.07
Конопка - где взять?


14-1121414851
syte_ser78
2005-07-15 12:07
2005.08.07
Задачка для 6 класса.


4-1118057183
pavel_guzhanov
2005-06-06 15:26
2005.08.07
можно ли преобразовать файл *.pdf в файл изображения?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский