воскресенье, 24 июня 2012 г.

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.57 МБ
Дистрибутив программы1.2 МБ

Комментариев нет:

Отправить комментарий