БД (Delphi)

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт

Re: БД (Delphi)

Сообщение #261 Maximus » 12.04.2012, 09:44

Используется.

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: БД (Delphi)

Сообщение #262 Andrey » 12.04.2012, 09:58

Сколько полей в таблице и какие из них надо выбирать?

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: БД (Delphi)

Сообщение #263 Andrey » 12.04.2012, 10:11

Где-нибудь в начале выполнения нужно поставить Randomize;
Вот пример. Он конечно не идеален, но вроде работает.

Код: Выделить всё

//Это выборка данных из базы в ADOQuery
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Table1');
ADOQuery1.Open;

r:=RandomRange(0,ADOQuery1.RecordCount); //выбираем случайно номер строки (r- integer)
for i:=1 to r do //в цикле прокручиваем adoquery до нужной записи
  ADOQuery1.Next;
ShowMessage(ADOQuery1.Fields[0].AsString); //выводим значение, цифра - номер столбца, поменяй на то что нужно

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт

Re: БД (Delphi)

Сообщение #264 Maximus » 12.04.2012, 12:14

Спасибо, приду домой проверю.

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт

Re: БД (Delphi)

Сообщение #265 Maximus » 12.04.2012, 16:36

RandomRange - неизвестный идентификатор.

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: БД (Delphi)

Сообщение #266 Andrey » 12.04.2012, 16:42

Забыл написать про uses Math

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт

Re: БД (Delphi)

Сообщение #267 Maximus » 12.04.2012, 16:50

Работает, иногда правда видимо число большое поэтому цикл долго работает, около секунды задержка.

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: БД (Delphi)

Сообщение #268 Andrey » 12.04.2012, 16:56

Другой способ пока не придумал.

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт

Re: БД (Delphi)

Сообщение #269 Maximus » 12.04.2012, 16:57

Думаю секунда это не критично. Кстати, как посчитать сколько времени работает какая-то часть кода?

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: БД (Delphi)

Сообщение #270 Andrey » 12.04.2012, 16:59

Код: Выделить всё

var a,b:TDateTime;
c: Extended;
...
a:=now;
...//код
b:=now;
c:=b-a;

Или надо в миллисекундах?

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: БД (Delphi)

Сообщение #271 Andrey » 12.04.2012, 17:05

Более точно так:

Код: Выделить всё

a : longint;
a := GetTickCount;
... //Код
a :=  GetTickCount - a ; //Время в мс

Можно ещё точнее, но это будет сложнее.

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт

Re: БД (Delphi)

Сообщение #272 Maximus » 12.04.2012, 17:07

В миллисекундах конечно.
В строке ошибка

Код: Выделить всё

Incompatible types: 'Integer' and 'Extended'

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: БД (Delphi)

Сообщение #273 Andrey » 12.04.2012, 17:09

Integer на Extended замени, забыл в чём результат выдаётся. И если в миллисекундах, то это второй вариант.

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт

Re: БД (Delphi)

Сообщение #274 Maximus » 12.04.2012, 17:11

У меня во втором варианте минус получается :D

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: БД (Delphi)

Сообщение #275 Andrey » 12.04.2012, 17:13

Я перепутал, наоборот

Код: Выделить всё

a : longint;
a := GetTickCount;
... //Код
a := GetTickCount - a ; //Время в мс

GetTickCount - время с момента запуска системы

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт

Re: БД (Delphi)

Сообщение #276 Maximus » 12.04.2012, 17:16

Понятно, я сначала подумал это время с момента запуска программы.

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: БД (Delphi)

Сообщение #277 Andrey » 12.04.2012, 17:18

Можно ещё такты процессора считать, так будет точнее. Но думаю что такая точность в данном случае не нужна.

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт

Re: БД (Delphi)

Сообщение #278 Maximus » 14.04.2012, 17:40

Теоретически возможен дисконнект с БД MS Access?

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: БД (Delphi)

Сообщение #279 Andrey » 14.04.2012, 17:43

Теоретически возможно всё, но так как данная БД является локальной файловой то вероятность дисконнекта очень мала.

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 6 месяцев
Откуда: Воронеж
ICQ Сайт

Re: БД (Delphi)

Сообщение #280 Maximus » 14.04.2012, 17:48

Т.е. проверка на соединение перед выполнением запроса не нужна?


Вернуться в «Delphi/Pascal»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 5 гостей