Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
ВнизСчитывание данных из таблицы (базы) Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.046 c