Получить кол-во записей в таблице SQLite и др.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение Сережа » 22.11.2015 23:08:46

alexs писал(а):1 юзер - хватит и sqlite (например - хранение локальных настроек)

у меня где то 3-4 пользователя будут в базу записи делать
Сережа
новенький
 
Сообщения: 33
Зарегистрирован: 02.07.2015 00:24:15
Откуда: Воронеж

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение WAYFARER » 23.11.2015 00:36:33

Сережа писал(а):у меня где то 3-4 пользователя будут в базу записи делать

Одновременно несколько человек писать в SQLIte не смогут.
Используйте любую многопользовательскую СУБД. FireBird или MySQL.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение alexs » 23.11.2015 14:03:36

Сережа писал(а):у меня где то 3-4 пользователя будут в базу записи делать

Однозначно рекомендую птицу. При таких объёмах приемлемое быстродействие будет даже при настройках по умолчанию.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение Сережа » 28.11.2015 00:11:53

пока переделываю свой проект под новую сетку, вроде все пока суперски выходит (правда не понял можно ли включить индикатор в виде чекбоксов, как это есть в сетке от Ehlib, да и вообще описалово какое-нибудь по функционалу ;) ),
а тем временем чтобы тему новую не создавать еще один вопросик: у меня в одном делфи проекте был вот такой код
Код: Выделить всё
procedure TMainForm.SearchEditChange(Sender: TObject);
begin

if Length(SearchEdit.Text)>0 then
MainForm.SQLQuery1.Filtered:=true

else
  MainForm.SQLQuery1.Filtered:=false;
  MainForm.SQLQuery1.Filter:='Otdel >= '''+SearchEdit.Text+'''';
end;

procedure TMainForm.SQLQuery1FilterRecord(DataSet: TDataSet; var Accept: Boolean
  );
begin
Accept := Pos(AnsiUpperCase(MainForm.SearchEdit.Text), AnsiUpperCase(MainForm.SQLQuery1.FieldByName('Otdel').AsString))=1; //поиск по Отделу без учета регистра
end;


При вводе данных в это поле, независимо от регистра, включался фильтр и в сетке оставались видимы только данные подходящие под этот фильтр... в Lazarus сей трюк не подходит... Где то даже тут я вроде бы видел ответы, но они слишком сложные какие то, неужто нет простенького решения?
Сережа
новенький
 
Сообщения: 33
Зарегистрирован: 02.07.2015 00:24:15
Откуда: Воронеж

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение WAYFARER » 28.11.2015 01:10:28

А что не работает? Не фильтрует? попробуй UTF8UpperCase (uses LCLProc) использовать.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение Сережа » 28.11.2015 01:22:50

WAYFARER писал(а):А что не работает?

с вашей подсказкой стало лучше работать
Код: Выделить всё
UTF8LowerCase
, но все равно, если начать вводить с большой буквы, то откидывает записи с малой буквы, но те что идут дальше он берет, к примеру "привет" и "ПривЕТ" в базе, вводить с П, показывает только "ПривЕТ", правда когда ввожу последнюю букву то совсем все результаты пропадают.
Если с маленькой буквы ввожу, то любые дальше в разном регистре все равно фильтруется все нормально как надо

Up :idea: как только в конце написал .AsString))=0;
фильтр заработал изумительно, жаль только, что не в той раскладке))) в русской перестает работать при этом =))
Сережа
новенький
 
Сообщения: 33
Зарегистрирован: 02.07.2015 00:24:15
Откуда: Воронеж

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение Сережа » 03.12.2015 19:48:09

Есть варианты?

и если можно пример записи картинок через OpenDialog в базу Firebird )
Сережа
новенький
 
Сообщения: 33
Зарегистрирован: 02.07.2015 00:24:15
Откуда: Воронеж

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение WAYFARER » 03.12.2015 20:58:46

Сережа писал(а):Так же интересует пример записи картинок в блоб поля базы FireBird

http://forum.lazarus.freepascal.org/ind ... ic=18604.0
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение DYUMON » 04.12.2015 07:00:36

При вводе данных в это поле, независимо от регистра, включался фильтр и в сетке оставались видимы только данные подходящие под этот фильтр.

тут тебе надо делать запрос через like
Код: Выделить всё
MainForm.SQLQuery1.sql:= 'select * from blabla where kuku like '%:c%';
MainForm.SQLQuery1.parambyname('c').assstring:=SearchEdit.Text;
MainForm.SQLQuery1.open;

правда тут подводный камень. sqlite like поддерживает только для латиницы. не для кирилицы. тут либо icu ставить , либо свою процедуру like писать, а потом её использовать.
Аватара пользователя
DYUMON
постоялец
 
Сообщения: 234
Зарегистрирован: 11.03.2009 13:32:54

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение Снег Север » 04.12.2015 08:42:14

DYUMON писал(а):sqlite like поддерживает только для латиницы. не для кирилицы. тут либо icu ставить , либо свою процедуру like писать, а потом её использовать.
Совершенно верно.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3053
Зарегистрирован: 27.11.2007 16:14:47

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение Сережа » 04.12.2015 19:23:26

WAYFARER
Код: Выделить всё
var AFPData9 : OleVariant
---
with AQuery do begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM Template WHERE FID = ' + IntToStr(AFingerID));
    Open;                       
if IsEmpty then
      Append
    else
      Edit;

    FieldByName('FID').Value := AFingerID;
    FieldByName('Name').Value:=regName;

  with TBlobStream(CreateBlobStream(FieldByName('FingerTmplate'), bmWrite)) do
    begin
      pData := VarArrayLock(AFPData9);
      try
        Write(pData^, VarArrayHighBound(AFPData9, 1) - VarArrayLowBound(AFPData9, 1) + 1);
      finally
        VarArrayUnlock(AFPData9);
      end;
      Free;
    end;         
    Post;
    Close;
  end; 

Пишет что не знает что такое CreateBlobStream, видимо надо как то определить... не поясните? для совсем совсем начинающих :oops:
Сережа
новенький
 
Сообщения: 33
Зарегистрирован: 02.07.2015 00:24:15
Откуда: Воронеж

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение WAYFARER » 04.12.2015 21:41:56

AQuery - это что? Какой именно компонент?
Метод CreateBlobStream есть только у потомков TDBDataSet.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение Сережа » 04.12.2015 22:28:39

WAYFARER писал(а):AQuery

не знаю, это из того примера, на который вы ссылку дали ) наверное это sqlquery...
пример бы такой что б на лазарусе сразу заработал без всяких платных компонентов
Сережа
новенький
 
Сообщения: 33
Зарегистрирован: 02.07.2015 00:24:15
Откуда: Воронеж

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение WAYFARER » 05.12.2015 00:04:00

Ну так и делай по аналогии, с компонентами, которыми пользуешься
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Получить кол-во записей в таблице SQLite и др.

Сообщение alexs » 05.12.2015 01:05:05

Для хранения изображений обычно используют блоб-поля. И для них создаются у датасета TBlobField-ы (наследники от TField)
У уж он умеет и из файла читать и из потока.
Также очень рекомендую создавать поля для датасета во время разработки. Тогда и дурацкий медленный FieldByName() не нужен будет. Да и с приведением типов меньше возиться надо будет.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 256

Рейтинг@Mail.ru
cron