Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.06;
Скачать: CL | DM;

Вниз

Считывание данных из таблицы (базы)   Найти похожие ветки 

 
npu3pak ©   (2007-04-13 08:40) [0]

Доброго времени суток!
Я пишу дипломную работу. Тема: Базы данных. Программа для компьютерного клуба.
У меня такая проблема:
Когда я ввожу данные в базу - все нормально. Отнимается время, которое осталось.
Но как только я закрываю форму. Отсчет прекращается :(
Так вот: как считать данные из базы, поместить их в массив и продолжить отнимать время, которое осталось.
Я уже пробовал через adodataset и через adoquery. Не канает! :( т.е. я не могу считать данные из таблицы.
Советовали так для мемо-поля:

while not adoquery1.eof do
begin
memo1.lines.add(adoquery1.fieldbyname("name").asstring);
adoquery1.next;
end;

а правильно так:
var
fname: TFieald;
...
with memo1.lines, adodataset1 do begin
BeginUpdate;
try
   fname:= fieldbyname("name");

   first;
   while not eof do begin
      add(fname.asstring);
      next;
   end;

finally
   EndUpdate;
end;
end;


Но так не работает. Может нужно что-нибудь еще?
Помоги начинающему, плиз!!! ;)


 
{RASkov}   (2007-04-13 08:47) [1]

adoquery1.First; Перед циклом вызови....


 
Сергей М. ©   (2007-04-13 08:47) [2]


> Отнимается


Кем и у кого оно отнимается ?) Кто посмел ?)

Может таки вычитается, а не "отнимается" ?)


> так не работает


А где тут "отнимание" ? В упор не вижу ...


 
Sergey13 ©   (2007-04-13 08:48) [3]

Нифига не понял.

> Но как только я закрываю форму. Отсчет прекращается :(

У меня еще хуже: не запустил программу - она не работает. Приходится запускать. Может и тебе стоит попробовать не закрывать форму?

Зачем тут memo непонятно. Ты хочешь постоянно считать время? Зачем? Достаточно наверное раз в 5 (1,2,3,10 - по желанию) минут опрашивать время и сравнивать его с временем в текущих сеансах.

> Я пишу дипломную работу. Тема: Базы данных.

Ты будущий программист по образованию? У тебя удивительно странные для дипломника-программиста вопросы.


 
{RASkov}   (2007-04-13 08:53) [4]

> У тебя удивительно странные для дипломника-программиста
> вопросы.

Точно... с такими вопросами в армию надо :)


 
npu3pak ©   (2007-04-13 08:55) [5]

Ребята! Вот только не надо глупых вопросов. Давайте по теме?! Я прошу помочь, а не читать нотации. У меня и так мало времени осталось. :(


> {RASkov}

если ты не заметил, то во 2 примере уже есть adoquery1.First; !!!


> Сергей М.

Мне просто нужно считать данные из таблицы (базы) access и все! Больше мне пока ничего не нужно. Можно "вычитание" не трогать! :)


 
Сергей М. ©   (2007-04-13 08:57) [6]


> npu3pak ©   (13.04.07 08:55) [5]


> Мне просто нужно считать данные из таблицы (базы) access
> и все!


Что ж, благое желание)

И что ?

Что значит "не работает" ? Какие симптомы у "болезни" ?


 
{RASkov}   (2007-04-13 09:01) [7]

точно в армию....
Ну это про квадраты катать..... шары носить.

adoquery1.First;
while not adoquery1.eof do
begin
 memo1.lines.add(adoquery1.fieldbyname("name").asstring);
 adoquery1.next;
end;

> Но как только я закрываю форму. Отсчет прекращается :(

Ну НЕ на OnClose-же формы ты это делаешь.....


 
npu3pak ©   (2007-04-13 09:20) [8]


> {RASkov}

А можно просто сказать как сделать? Нужно считать данные и все! Больше я ничего не хочу! :(


 
Sergey13 ©   (2007-04-13 09:27) [9]

> [8] npu3pak ©   (13.04.07 09:20)

Куда считать и зачем? Ты же открыл adoquery1 - это значит ты уже считал данные.


 
{RASkov}   (2007-04-13 09:28) [10]

> Нужно считать данные и все! Больше я ничего не хочу! :(

То как ты расписал свою проблему в [0] непонятно вообще.... а данные уже считаны. Если они, конечно, были...


 
npu3pak ©   (2007-04-13 11:04) [11]

Какие же вы трудные! Все надо разжевывать!
Программа типа локера.

Есть база данных на accesse. В ней есть таблица Players. В это таблицы есть поля: Номер (значение, например 1), начало сеанса (по умолчанию --:--), время (время, на которое чел сел), Осталось (время окончания минус время начала, в минутах), окончание (время, во сколько окончится сеанс, --:--), цена, тариф, свободен (да/нет, boolean).

Так вот, при старте программы, когда появляется главная форма, мне нужно считать данные из поля "окончание" в массив, кол-во элементов которого равно кол-ву компов. База изначально не пустая. Там уже есть данные (По умолчанию, номера компов, 0 в полях цена и осталось, --:-- в полях "начало", "время", "окончание", поле "свободен" имеет значение "да"). Т.е. эти поля пустыми не бывают!


 
Сергей М. ©   (2007-04-13 11:12) [12]


> мне нужно считать данные из поля "окончание" в массив


var
Arr: array of TDatetime;

..

Query.Open;
with Query do
try
 Last;
 SetLength(Arr, RecordCount);
 First;
 while not EOF do begin
   Arr[i] := FieldByName("окончание").Value;
   Next;
 end;
finally
 Close;
end;


 
npu3pak ©   (2007-04-13 11:17) [13]

попробую


 
Плохиш ©   (2007-04-13 11:17) [14]


> npu3pak ©   (13.04.07 11:04) [11]
> Какие же вы трудные! Все надо разжевывать!

Нам не надо "разжёвывать", нам твои проблемы до одного места... Это тебе от нас что-то надо, раз сюда припёрся. Не нравиться? Никто не держит и не соскучиться...


 
npu3pak ©   (2007-04-13 11:19) [15]


> Сергей М.

только база на Accesse, там немного иначе, вроде :(
с Adoquery так не канает :(


 
Сергей М. ©   (2007-04-13 11:33) [16]


> npu3pak ©   (13.04.07 11:19) [15]


> только база на Accesse


Да хоть на Луне)

Query - это наследник TDataset, а TDataset"у по барабану, откуда взяты данные - хоть из Access"а, хоть с Луны


 
npu3pak ©   (2007-04-13 11:43) [17]


> Сергей М.

Хорошо, а если поле текстовое?
Тогда как?


 
Сергей М. ©   (2007-04-13 11:51) [18]


> а если поле текстовое?


А какой же идиот хранит даннные типа "время" в строковом виде ?)


> Тогда как?


Тогда array of String - это же очевидно)


 
npu3pak ©   (2007-04-13 14:30) [19]


> Сергей М.

Хамить обязательно? Раз в текстовом - значит так надо. И потом - меньше заморочек с подсчетом! Лично мое мнение по данному вопросу.


 
{RASkov}   (2007-04-13 14:57) [20]

> И потом - меньше заморочек с подсчетом! Лично мое мнение по данному вопросу.

Хреновое мнение....что проще складывать/вычитать - "числа" или "строки"?
Вообщем, данные с датасетов считываются так: <FieldName>.Value или [AsXxxxx]....и ты их уже давно считал.
Вопросы?


 
npu3pak ©   (2007-04-14 10:57) [21]


> Сергей М.


> var
> Arr: array of TDatetime;
>
> ..
>
> Query.Open;
> with Query do
> try
>  Last;
>  SetLength(Arr, RecordCount);
>  First;
>  while not EOF do begin
>    Arr[i] := FieldByName("окончание").Value;
>    Next;
>  end;
> finally
>  Close;
> end;


в данном случае появляется ошибка "Проводник не поддерживает... " :(


 
Anatoly Podgoretsky ©   (2007-04-14 17:09) [22]

> Сергей М.  (13.04.2007 11:12:12)  [12]

Красиво так будет, если RecordCount окажется скажем так 1, а  not EOF получит 10 записей.



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

Текущий архив: 2007.05.06;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.026 c
1-1173694564
mavrtuva
2007-03-12 13:16
2007.05.06
Quantum Grid


2-1176555427
Roman_S
2007-04-14 16:57
2007.05.06
Как организовать поиск по части слова по всем колонкам?


8-1156137008
hero
2006-08-21 09:10
2007.05.06
Радио в stream


2-1176896692
deras
2007-04-18 15:44
2007.05.06
Как найти файлы?


3-1171821500
Rav
2007-02-18 20:58
2007.05.06
Димамическое добавление имени "владельца" к текущей записи