БД (Delphi)

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Maximus » 12 апр 2012, 09:44

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

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Andrey » 12 апр 2012, 09:58

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

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Andrey » 12 апр 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
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Maximus » 12 апр 2012, 12:14

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

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Maximus » 12 апр 2012, 16:36

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

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Andrey » 12 апр 2012, 16:42

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

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Maximus » 12 апр 2012, 16:50

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

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Andrey » 12 апр 2012, 16:56

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

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Maximus » 12 апр 2012, 16:57

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

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Andrey » 12 апр 2012, 16:59

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

var a,b:TDateTime;
c: Extended;
...
a:=now;
...//код
b:=now;
c:=b-a;
Или надо в миллисекундах?

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Andrey » 12 апр 2012, 17:05

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

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

a : longint;
a := GetTickCount; 
... //Код
a :=  GetTickCount - a ; //Время в мс
Можно ещё точнее, но это будет сложнее.

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Maximus » 12 апр 2012, 17:07

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

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

Incompatible types: 'Integer' and 'Extended'

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Andrey » 12 апр 2012, 17:09

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

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Maximus » 12 апр 2012, 17:11

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

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Andrey » 12 апр 2012, 17:13

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

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

a : longint;
a := GetTickCount;
... //Код
a := GetTickCount - a ; //Время в мс
GetTickCount - время с момента запуска системы

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Maximus » 12 апр 2012, 17:16

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

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Andrey » 12 апр 2012, 17:18

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

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Maximus » 14 апр 2012, 17:40

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

Аватара пользователя
Andrey
Администратор
Администратор
Сообщения: 2345
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Andrey » 14 апр 2012, 17:43

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

Аватара пользователя
Maximus
Супермодератор
Супермодератор
Сообщения: 1507
Зарегистрирован: 02 фев 2012, 11:42
Откуда: Воронеж
Контактная информация:

Re: БД (Delphi)

Сообщение Maximus » 14 апр 2012, 17:48

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

Ответить