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

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

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

Сережа
новенький
Сообщения: 33
Зарегистрирован: 01.07.2015 23:24:15
Откуда: Воронеж

Сообщение Сережа »

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

у меня где то 3-4 пользователя будут в базу записи делать
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 567
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

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

Одновременно несколько человек писать в SQLIte не смогут.
Используйте любую многопользовательскую СУБД. FireBird или MySQL.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

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

Однозначно рекомендую птицу. При таких объёмах приемлемое быстродействие будет даже при настройках по умолчанию.
Сережа
новенький
Сообщения: 33
Зарегистрирован: 01.07.2015 23:24:15
Откуда: Воронеж

Сообщение Сережа »

пока переделываю свой проект под новую сетку, вроде все пока суперски выходит (правда не понял можно ли включить индикатор в виде чекбоксов, как это есть в сетке от 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 сей трюк не подходит... Где то даже тут я вроде бы видел ответы, но они слишком сложные какие то, неужто нет простенького решения?
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 567
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

А что не работает? Не фильтрует? попробуй UTF8UpperCase (uses LCLProc) использовать.
Сережа
новенький
Сообщения: 33
Зарегистрирован: 01.07.2015 23:24:15
Откуда: Воронеж

Сообщение Сережа »

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

с вашей подсказкой стало лучше работать

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

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

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

Сообщение Сережа »

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

и если можно пример записи картинок через OpenDialog в базу Firebird )
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 567
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

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

http://forum.lazarus.freepascal.org/ind ... ic=18604.0
Аватара пользователя
DYUMON
постоялец
Сообщения: 234
Зарегистрирован: 11.03.2009 12:32:54
Контактная информация:

Сообщение DYUMON »

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

тут тебе надо делать запрос через 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 писать, а потом её использовать.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

DYUMON писал(а):sqlite like поддерживает только для латиницы. не для кирилицы. тут либо icu ставить , либо свою процедуру like писать, а потом её использовать.
Совершенно верно.
Сережа
новенький
Сообщения: 33
Зарегистрирован: 01.07.2015 23:24:15
Откуда: Воронеж

Сообщение Сережа »

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:
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 567
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

AQuery - это что? Какой именно компонент?
Метод CreateBlobStream есть только у потомков TDBDataSet.
Сережа
новенький
Сообщения: 33
Зарегистрирован: 01.07.2015 23:24:15
Откуда: Воронеж

Сообщение Сережа »

WAYFARER писал(а):AQuery

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

Сообщение WAYFARER »

Ну так и делай по аналогии, с компонентами, которыми пользуешься
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Для хранения изображений обычно используют блоб-поля. И для них создаются у датасета TBlobField-ы (наследники от TField)
У уж он умеет и из файла читать и из потока.
Также очень рекомендую создавать поля для датасета во время разработки. Тогда и дурацкий медленный FieldByName() не нужен будет. Да и с приведением типов меньше возиться надо будет.
Ответить