Lazarus+Sqlite=Журнал учета реактивов

25.10.2011

Вот небольшая программа "Журнал учета реактивов" .

Задан список реактивов, по этому списку программа помогает вести приход-расход.  Написал сам. Lazarus+база Sqlite3. (SQLite - бесплатная локальная БД)

Есть функция поиска реактива. Нет - функции редактирования списка реактивов. База данных - в файле "zaba". Редактировать можно при помощи бесплатной кроссплатформерной программы SQLiteStudio2.

В базе 4 таблицы:

groups - наименования групп реактивов (Кислоты, щелочи, ....)

gr -  связка группа-реактив (ну и список реактивов заодно)

reaktiv - собственно журнал учета реактивов

personal - список персонала (не используется)

Прилагаю инсталлятор и исходники. Может пригодится кому.

26.10.2011

Исправлено :

 

1) procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: char);
begin
if key=',' then key:='.';
if not (key in ['0'..'9','.'] ) then key:=chr(0);
end;   
Разрешен ввод только цифр (Химики норовят указать единицы измерения и приписывают г, мг, кг, л)
Запятые автоматом заменяются на точки (Иначе в SQL запросе появляется как бы лишний параметр и это дает ошибку)
 

В списке реактивов теперь отображается не только наименование реактива ,но и значение из поля Nomerok - порядковый  номер полки где хранится реактив, а также первая буква группы: "К"-кислоты, "Щ"-щелочи, и т.д. (т.к. оказывается ,например, что соляная кислота есть как хч (химически чистая) - в группе "Кислоты", а есть как осч (особо чистая)  в группе "Фиксаналы", поэтому будем считать что это 2 различных реактива, тем более что и хранятся на различных полках)

Общие ощущения от процесса разработки - делфи все же лучще. 

В Lazarus некоторые функции для работы со строками не работают. Предполагаю что дело в кодировке.

Например UpperCase не работет. Pos не находит символ  ")" в строке, хотя он там точно есть . Пришлось написать

 

Function MyPos(s:string;c:char):integer;
var i:integer;
  begin
  for i:=1 to length(s) do
  if s[i]=c then MyPos:=i;
  end;
С Word, Excel не понятно как работать. Через comobj что-то не получилось, поэтому я пошел по другому пути - выгружаю данные в htm - файл и открываю в браузере установленном в системе по-умолчанию. 
 
SQlite - данные из столбцов имеющих тип дата-время заменяет на 31.12.1989. Это проблема 2-го тысячелетия. Я думал -давно осталось в прошлом. Выход - при записи в базу уменьшать год (скажем на 100) , а при считывании - производить обратную операцию. 

Алексей, можно исходник перезалить не качаеться встает загрузка на 1.150 Мб и все, очень бы хотелось на код взглянуть думаю приложение на Lazarus+SQLite3 написать.