Arsip: error!!!

 
user image
more 17 years ago

marvel

ini form pemanggilan buat qreport

unit ucetakbelipersupplier;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBTables;
type
  Tfrmcetakbelipersupplier = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    edkodespl: TEdit;
    ednamaspl: TEdit;
    edtgakhir: TEdit;
    btpreview: TButton;
    btCetak: TButton;
    btsetup: TButton;
    btbatal: TButton;
    edtgawal: TEdit;
    Label5: TLabel;
    edketerangan: TEdit;
    tbsupplier: TTable;
    tbbeli: TTable;
    procedure ednamasplKeyPress(Sender: TObject; var Key: Char);
    procedure edkodesplKeyPress(Sender: TObject; var Key: Char);
    procedure btbatalClick(Sender: TObject);
    procedure btpreviewClick(Sender: TObject);
    procedure btCetakClick(Sender: TObject);
    procedure btsetupClick(Sender: TObject);
    procedure edtgawalKeyPress(Sender: TObject; var Key: Char);
    procedure edtgakhirKeyPress(Sender: TObject; var Key: Char);
    procedure edketeranganKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  frmcetakbelipersupplier: Tfrmcetakbelipersupplier;
implementation
uses uLembarCetakBeliPerSupplier;
{$R .dfm}
procedure Tfrmcetakbelipersupplier.ednamasplKeyPress(Sender: TObject;
  var Key: Char);
begin
  if Key=chr(13) then
  begin
    edTgakhir.SetFocus;
    exit;
  end;
  //index berdasar nama supplier
  tbSupplier.IndexName:='namaspl';
  //cari yang paling mendekati isi edNama
  tbSupplier.FindNearest([edNamaspl.Text+Key]);
  edKodeSpl.Text:=tbSupplier['Kode'];
end;
procedure Tfrmcetakbelipersupplier.edkodesplKeyPress(Sender: TObject;
  var Key: Char);
begin
  if Key=chr(13) then
  begin
    edNamaspl.SetFocus;
    exit;
  end;
  //index berdasar kode supplier (key)
  tbSupplier.IndexName:='';
  //cari yang paling mendekati isi edKodeSpl
  tbSupplier.FindNearest([edKodeSpl.Text+Key]);
  edNamaspl.Text:=tbSupplier['pabrik'];
end;
procedure Tfrmcetakbelipersupplier.btbatalClick(Sender: TObject);
begin
  frmCetakBeliPerSupplier.Close;
end;
procedure Tfrmcetakbelipersupplier.btpreviewClick(Sender: TObject);
var PTgAwal, PTgAkhir : TDateTime;
    ket:string;
begin
  //jika tanggal kosong, anggap dari awal sampai akhir
  if length(edTgAwal.Text)=0 then edTgAwal.Text:='01.01.1900';
  if length(edTgAkhir.Text)=0 then edTgAkhir.Text:='01.01.2999';
  //cek input tanggal
  try
    begin
      PTgAwal:=StrToDate(edTgAwal.Text);
      PTgAkhir:=StrToDate(edTgAkhir.Text);
      ket:=edketerangan.Text;
    end;
  except
    beep;
    ShowMessage('Input data tanggal tidak sah!'+chr(13)+
                'Format tanggal: dd.mm.yyyy');
    exit;
  end;
  with uLembarcetakBeliPerSupplier.lbrCetakBeliPerSupplier do
    begin
      //hapus string SQL lama jika ada
      quBeli.SQL.Clear;
      //buat string SQL baru
      qubeli.SQL.Add('select   from '+Quotedstr('beli.db'));
      //jika edKodeSpl kosong, anggap semua supplier
      if length(trim(edketerangan.Text))=0 then
         edketerangan.Text:='%';
      quBeli.SQL.Add('where Keterangan Like :ket');
      quBeli.SQL.Add('and TglFaktur>=:PTgAwal');
      quBeli.SQL.Add('and TglFaktur<=:PTgAkhir');
      //set parameter
      quBeli.ParamByName('ket').AsString:=edKeterangan.Text;
      quBeli.ParamByName('PTgAwal').AsDate:=
                          StrToDate(edTgAwal.Text);
      quBeli.ParamByName('PTgAkhir').AsDate:=
                          StrToDate(edTgAkhir.Text);
      //siapkan query
      quBeli.Prepare;
      //buka SQL
      quBeli.Open;
      //isi variabel dalam bandTitle
      if edketerangan.Text='%' then
      qrketerangan.Caption:='semua jenis obat'
      else
        qrketerangan.Caption:=edketerangan.Text;
        begin
          qrKodeSpl.Caption:=edKodeSpl.Text;
          qrNamaSpl.Caption:=edNamaspl.Text;
        end;
      qrPeriode.Caption:=edTgAwal.Text+' s/d '+edTgAkhir.Text;
      if Sender=btPreview then
         //jika event OnClick berasal dari btPreview
         qrCetakBeliPerSupplier.Preview
      else
         //jika event OnClick berasal dari btCetak
         qrCetakBeliPerSupplier.Print;
    end;
end;
procedure Tfrmcetakbelipersupplier.btCetakClick(Sender: TObject);
begin
  btPreviewClick(Sender);
end;
procedure Tfrmcetakbelipersupplier.btsetupClick(Sender: TObject);
begin
  lbrCetakBeliPerSupplier.qrCetakBeliPerSupplier.PrinterSetup;
end;
procedure Tfrmcetakbelipersupplier.edtgawalKeyPress(Sender: TObject;
  var Key: Char);
begin
  if Key=chr(13) then edTgAkhir.SetFocus;
end;
procedure Tfrmcetakbelipersupplier.edtgakhirKeyPress(Sender: TObject;
  var Key: Char);
begin
  if Key=chr(13) then btPreview.SetFocus;
end;
procedure Tfrmcetakbelipersupplier.edketeranganKeyPress(Sender: TObject;
  var Key: Char);
begin
if Key=chr(13) then
  begin
    edkodespl.SetFocus;
    exit;
  end;
  //index berdasar nama supplier
  tbbeli.IndexName:='';
end;
end.
kalo ini buat tampilan qreportnya

unit ulembarcetakbelipersupplier;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, QRCtrls, QuickRpt, DBTables, DB, ExtCtrls;
type
  Tlbrcetakbelipersupplier = class(TForm)
    qrcetakbelipersupplier: TQuickRep;
    tbsupplier: TTable;
    tbobat: TTable;
    qubeli: TQuery;
    DetailBand1: TQRBand;
    PageFooterBand1: TQRBand;
    SummaryBand1: TQRBand;
    TitleBand1: TQRBand;
    ChildBand1: TQRChildBand;
    QRLabel1: TQRLabel;
    QRLabel2: TQRLabel;
    QRLabel3: TQRLabel;
    QRLabel4: TQRLabel;
    qrkodespl: TQRLabel;
    qrnamaspl: TQRLabel;
    qrperiode: TQRLabel;
    QRLabel8: TQRLabel;
    QRLabel9: TQRLabel;
    QRLabel10: TQRLabel;
    QRLabel11: TQRLabel;
    QRLabel12: TQRLabel;
    QRLabel13: TQRLabel;
    QRLabel14: TQRLabel;
    QRDBText1: TQRDBText;
    QRLabel15: TQRLabel;
    QRSysData1: TQRSysData;
    QRDBText2: TQRDBText;
    QRDBText3: TQRDBText;
    QRDBText4: TQRDBText;
    QRDBText5: TQRDBText;
    qrjumbeli: TQRExpr;
    QRSysData2: TQRSysData;
    qrtotbanyak: TQRLabel;
    qrtotbeli: TQRLabel;
    qrketerangan: TQRLabel;
    tbbeli: TTable;
    QRDBText6: TQRDBText;
    procedure DetailBand1AfterPrint(Sender: TQRCustomBand;
      BandPrinted: Boolean);
    procedure SummaryBand1BeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    procedure qrcetakbelipersupplierBeforePrint(Sender: TCustomQuickRep;
      var PrintReport: Boolean);
    procedure DetailBand1BeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  lbrcetakbelipersupplier: Tlbrcetakbelipersupplier;
  halaman,nomor:integer;
  totbanyak,totbeli :currency;

implementation
{$R .dfm}
procedure Tlbrcetakbelipersupplier.DetailBand1AfterPrint(
  Sender: TQRCustomBand; BandPrinted: Boolean);
begin
  TotBanyak:=TotBanyak+quBeli['Banyak'];
  TotBeli:=TotBeli+quBeli['Banyak'] quBeli['Harga Beli'];
end;
procedure Tlbrcetakbelipersupplier.SummaryBand1BeforePrint(
  Sender: TQRCustomBand; var PrintBand: Boolean);
begin
  qrTotBanyak.Caption:=Format('%10g',[TotBanyak]);
  qrTotBeli.Caption:=Format('%16m',[TotBeli]);
end;
procedure Tlbrcetakbelipersupplier.qrcetakbelipersupplierBeforePrint(
  Sender: TCustomQuickRep; var PrintReport: Boolean);
  begin
  halaman:=0;
  Nomor:=0;
  Totbeli:=0;
  totbanyak:=0;
end;
procedure Tlbrcetakbelipersupplier.DetailBand1BeforePrint(
  Sender: TQRCustomBand; var PrintBand: Boolean);
begin
tbobat.FindKey([qubeli.FieldByName('kode obat').AsString]);
end;
end.
kalo di run keterangan,kode,nama,tglawal,tglakhir nga di isi jalan dia... tapi kalo misalnya keterangan/kode/nama diisi.. keluar tulisan could not convert variant typer (null) into typer (currency) salahnya dimana ya ? plz donk... uda strezz ngehadapinnya :(
user image
more 17 years ago

cyber_hecker

edKodeSpl.Text:=tbSupplier['Kode'];
untuk setiap kode yang seperti di atas, sebaiknya di ganti menjadi
edKodeSpl.Text := tbSupplier.FieldByName('Kode').AsString;
user image
more 17 years ago

tox2wow

tapi kalo misalnya keterangan/kode/nama diisi.. keluar tulisan could not convert variant typer (null) into typer (currency)
Cek : 1. Cek tipe data keterangan/kode/nama. 2. Cek data di field keterangan/kode/nama, sudah terisi apa belum. 3. Cek data pembanding (yg diambil dari inputbox), terkirim apa ga, atau malah data pembanding yg diambil dari edit box, yang dikirim cuma string kosong. 4. Error nya muncul pas di prosedur (ex. Button1.OnClick) apa ???[/quote]
user image
more 17 years ago

tox2wow

tapi kalo misalnya keterangan/kode/nama diisi.. keluar tulisan could not convert variant typer (null) into typer (currency)
Cek : 1. Cek tipe data keterangan/kode/nama. 2. Cek data di field keterangan/kode/nama, sudah terisi apa belum. 3. Cek data pembanding (yg diambil dari inputbox), terkirim apa ga, atau malah data pembanding yg diambil dari edit box, yang dikirim cuma string kosong. 4. Error nya muncul pas di prosedur (ex. Button1.OnClick) apa ???
user image
more 17 years ago

marvel

yap... error nya cuma muncul kalo edketerangan nya di isi... trus pencet btpreview.. keluar dah tuh error.. hihihi
user image
more 17 years ago

cyber_hecker

profecor ceber hecer mo nyoba nganalisa program mu
  if Key=chr(13) then
  begin
    edTgakhir.SetFocus;
    exit;
  end;
perintah ini maksudnya pada saat user menekan tombol enter, maka ke kotak isian berikutnya kan ? saran :
procedure TFUtama.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    13, 40 : SelectNext(Sender As TWinControl,True,True);
    38 : SelectNext(Sender As TWinControl,False,True);
  end;
end;
perintah diatas bisa digunakan untuk semua komponen. jadi gak perlu ngetik ulang code, cukup diarahkan semuanya pada Edit1KeyDown. bahkan bisa menggunakan anak panah (key 38 panah atas, key 40 panah bawah).
  //index berdasar nama supplier
  tbSupplier.IndexName:='namaspl';
  //cari yang paling mendekati isi edNama
  tbSupplier.FindNearest([edNamaspl.Text+Key]);
  edKodeSpl.Text:=tbSupplier['Kode']; 
wah perintah ini berbahaya banget. kalo untuk pencarian waktu user menekan tombol hapus, kenapa gak menggunakan onChange aja ? coba waktu kamu isi kan data, truz tekan tombol backspace (hapus). gimana hasilnya ? itu saran untuk unit ucetakbelipersupplier; untuk unit ulembarcetakbelipersupplier, saranku hanya satu. hapus semua koding yang ada pada quickreportnya.
procedure Tlbrcetakbelipersupplier.DetailBand1AfterPrint(
  Sender: TQRCustomBand; BandPrinted: Boolean);
begin
  TotBanyak:=TotBanyak+quBeli['Banyak'];
  TotBeli:=TotBeli+quBeli['Banyak']quBeli['Harga Beli'];
end; 
ini maksudnya adalah, nanti pada akhirnya user bisa menghasilkan total keseluruhan jumlah barang dan harga beli barang kan ?. koding yang sia-sia.
procedure Tlbrcetakbelipersupplier.SummaryBand1BeforePrint(
  Sender: TQRCustomBand; var PrintBand: Boolean);
begin
  qrTotBanyak.Caption:=Format('%10g',[TotBanyak]);
  qrTotBeli.Caption:=Format('%16m',[TotBeli]);
end;
nanti setelah dihitung pada perintah DetailBand1AfterPrint, baru ditampilkan pada summary nya kan ? untuk 2 prosedur diatas, udah bisa di wakili dengan menggunakan QRExpr. pada properties Expression di isi : SUM(Banyak) untuk total banyak SUM([harga beli]) untuk total harga beli.
procedure Tlbrcetakbelipersupplier.DetailBand1BeforePrint(
  Sender: TQRCustomBand; var PrintBand: Boolean);
begin
tbobat.FindKey([qubeli.FieldByName('kode obat').AsString]);
end; 
nah.. prosedur ini gue gak ngerti sama sekali maksudnya. ini buat apa ? kenapa setiap mau ngeprint harus mencari kode obat ? iya kalo datanya hanya satu. tapi kalo udah puluhan ribu gimana ? nangis dunk komputernya. wakakakak yup gitu aja saranku. dan kesalahan program kamu terletak pada :
procedure Tlbrcetakbelipersupplier.DetailBand1AfterPrint(
  Sender: TQRCustomBand; BandPrinted: Boolean);
begin
  TotBanyak:=TotBanyak+quBeli['Banyak'];
  TotBeli:=TotBeli+quBeli['Banyak'] quBeli['Harga Beli'];
end;  
untuk mengeset nilai pada variabel gak boleh menggunakan "quBeli['Harga Beli']" kayak gini, karena nilai yang terkandung didalamnya bertipe variant. sebaiknya gunakan yang standard aja kayak saran ku sebelumnya. contoh : TotBeli := TotBeli + quBeli.FieldByName('Banyak').AsCurrency. nb. kalo gak ngerti juga, coba ke belakang bentar, trus nyebur ke kolam belakang rumah. wakakakak...
more ...
  • Pages:
  • 1
Share to

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com