13.09.2006 17:29
redshadow
 
Вот решил выложить исходнички моей програмки.
Тут небольшая предистория. В Ашане и подобных магазинах стало модно ставить апараты которые считывая штрихкод автоматически показывают на экране его стоимость. Наши тоже загорелись такой идеей но узнав, что подобное устройство стоит от 1500$ попросили меня написать, что-то подобное. К сожалению у этого устройсва есть еще один недостаток - его приходится загружать новыми ценами через програмку для которой из см нужно писать конвертер. Подумав немного я решил просто написать прогу которая ставится на стареньки компутер с мониторчиком и самым дешовым сканером штрихкода за 70$ купленного в плюсе типа метролоджик (безкнопочный). под это заказываем упаковку типа банкоматвоского терминала получатеся только меньше и все довольны. Скрин могу прислать если нужно а вот исходничек на дельфи удобно и быстро карника с рекламой вашего магазина и возможность с клавиатуры даже вводить штрих код. Прога показывает так же о существующих на данный товар скидках и т.п. Если кому нужно вышлю исходники.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,inifiles, DB, DBAccess, Ora, StdCtrls, MemDS, Mask, DBCtrls,
ExtCtrls, jpeg;

type
TMainForm = class(TForm)
OraSession1: TOraSession;
Edit1: TEdit;
OraQuery1: TOraQuery;
OraDataSource1: TOraDataSource;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
Label1: TLabel;
DBEdit4: TDBEdit;
Image1: TImage;
Label2: TLabel;
Label3: TLabel;
Panel1: TPanel;
DBEdit5: TDBEdit;
Label4: TLabel;
OraQuery2: TOraQuery;
OraDataSource2: TOraDataSource;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
Label5: TLabel;
Label6: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;

var
MainForm: TMainForm;
inifile:tinifile;
S,S1,S2,MX,VC:string;

implementation

{$R *.dfm}

procedure TMainForm.FormCreate(Sender: TObject);
begin
inifile:=Tinifile.Create(extractfiledir(paramstr(0))+'\mon.ini');
OraSession1.Server:=inifile.readstring('config','dbaseSID','');
OraSession1.Username:=inifile.readstring('config','Username','');
OraSession1.Password:=inifile.readstring('config','Password','');
MX:=inifile.readstring('config','МестоХранения','');
VC:=inifile.readstring('config','ВидЦены','');
inifile.Free;
Image1.Picture.LoadFromFile(extractfiledir(paramstr(0))+'\mon.jpg');
Panel1.Visible:=false;
OraSession1.Connect;
end;

procedure TMainForm.Button1Click(Sender: TObject);
begin
OraQuery1.Active:=true;
end;

procedure TMainForm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then begin
Panel1.Visible:=false;
S:='';
S1:='';
S2:='';
dbedit6.Text:='';
label4.Caption:='';
label5.Caption:='';
OraQuery1.Active:=false;
OraQuery1.SQL.Clear;
OraQuery1.SQL.Add('SELECT');
OraQuery1.SQL.Add('B.PRICE , B.ARTICLE , A.NAME ,A.FLAGS, H.BARCODE,A.mesname');
OraQuery1.SQL.Add('FROM');
OraQuery1.SQL.Add('SUPERMAG.SMPRICES B');
OraQuery1.SQL.Add(', SUPERMAG.SMCARD A');
OraQuery1.SQL.Add(', SUPERMAG.SMSTOREUNITS H');
OraQuery1.SQL.Add('WHERE');
OraQuery1.SQL.Add('(B.ARTICLE = A.ARTICLE)');
OraQuery1.SQL.Add('AND (H.ARTICLE = A.ARTICLE)');
OraQuery1.SQL.Add('AND (B.PRICETYPE ='+VC+')');
OraQuery1.SQL.Add('AND (B.STORELOC ='+MX +')');
OraQuery1.SQL.Add('AND (H.BARCODE ='''+edit1.Text+''')');
OraQuery1.Active:=true;
label1.Caption:='Считанный штриховой код: '+edit1.Text;
edit1.Text:='';
if DBEdit2.Text='' then begin
label2.Caption:='ТОВАР НЕ НАЙДЕН';
label3.Caption:='';
OraQuery1.Active:=false;
exit;
end;

if DBEdit2.Text<>'' then begin
S:=dbedit1.Text;
S1:=DBEdit2.Text;
label2.Caption:=S1;
S2:='ЦЕНА ЗА '+DBEdit4.Text+' '+DBEdit3.Text+' РУБ';
label3.Caption:=S2;
if dbedit5.Text<>'0' then begin
if dbedit5.Text<>'64' then label4.Caption:=' ВНИМАНИЕ! НА ДАННЫЙ ТОВАР СКИДКИ НЕ РАСПРОСТРАНЯЮТСЯ'
end;
// Работа с кол-скидкой
OraQuery2.Active:=false;
OraQuery2.SQL.Clear;
OraQuery2.SQL.Add('SELECT');
OraQuery2.SQL.Add('B.QUANTITY , B.PERCENT');
OraQuery2.SQL.Add('FROM SUPERMAG.SMCARD A , SUPERMAG.SMDISCQUANTITY B');
OraQuery2.SQL.Add('WHERE');
OraQuery2.SQL.Add(' (B.ARTICLE = A.ARTICLE)');
OraQuery2.SQL.Add('AND (A.ARTICLE ='''+S+''')');
OraQuery2.Active:=true;

if dbedit6.Text<>'' then begin
Panel1.Visible:=true;
Label4.Caption:='ВНИМАНИЕ! НА ДАННЫЙ ТОВАР ДЕЙСТВУЕТ КОЛЛИЧЕСТВЕННАЯ СКИДКА';
Label5.caption:='ВЫ ПОЛУЧАЕТЕ СКИДКУ '+dbedit6.Text+'% ПРИ ПОКУПКЕ '+dbedit7.Text+' И БОЛЕЕ ЕДЕНИЦ';
end;

end;
end;
OraQuery1.Active:=false;
OraQuery2.Active:=false;
end;
end.

Не скажу, что код волшебный, но работает без сбоев спасибо за внимание.
13.09.2006 17:57
OlegON
 
Я уже написал подобное, только работает в онлайне с выводом картинок из базы СМ.
14.09.2006 10:19
redshadow
 
С картинками идея хорошая, я чесно говоря не добавлял в базу см картинки по принципу меньше в базе лишнего лучше работает, хотел сделать отдельную реализацию базы картинок в папке с программой ну и менеджера к ней, но потом подумал, что мне придется набивать ее картинками, а товара жуть как много :) Решил сделать без нее. А так вообще приятно, что этим люди интересуются, кстати моя прога тоже в онлайне всегда.
14.09.2006 10:22
OlegON
 
На самом деле картинки лежат в отдельной таблице. Выложить ее в отдельное табличное пространство, даже на IDE каком-нибудь и ничего страшного... Не так уж часто их запрашивают. В данном случае, мне кажется, нелогично их файлами пихать.
14.09.2006 10:30
redshadow
 
Я файлами, как вариант рассматривал, но всеже много товара есил силы будут накачаю рисунков. Работа на самом деле приличная на товары картинки вешать :)
Часовой пояс GMT +3, время: 01:49.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.