Arsip: Zeos 7 ZQuery error Access violation saat open

more 8 years ago
delphi_boy
Salam kenal para master Delphi semuanya.
Saya newbie di sini dan ingin meminta bantuan atas permasalahan yg saya temui dlm membuat aplikasi database dg Delphi 7.
Saya menggunakan Firebird 2.5 dan koneksi databasenya menggunakan Zeos DB0 7.0.0-dev (versi yg stable 6.6 blm support Firebird 2.5). Setting koneksi database TZConnection (dibuat namanya ZKonesi) dibuat sbb:
Database: D:\My Project\Penjualan Firebird\Data\DATA.FDB
HostName: localhost
Password: masterkey
Protocol: firebird-2.5
TransactionIsolationLevel: tiReadCommited
User: sysdba
Saya menempatkan sebuah komponen TZQuery dengan setting properti sbb:
Connection: ZKoneksi
SQL:
SELECT beli., beli_detil. , supplier.namasup, barang.namabrg
FROM barang INNER JOIN (supplier INNER JOIN (beli INNER JOIN beli_detil
ON beli.nofaktur = beli_detil.nofaktur) ON supplier.kodesup = beli.supplier)
ON barang.kodebrg = beli_detil.kodebrg
where beli.nofaktur = :nofakt
Params [nofakt]:
1. Datatype: ftString
2. ParamType: ptInput
3. Size: 255
Properti lainnya dlm nilai defaultnya (tidak diubah).
Nah saat mengeksekusi perintah berikut di dalam method OnClick pada button terjadi error "Access violation at address 00406C52 in module 'Project1.exe'. Read of address 66646866":
ZQryBeli.ParamByName('nofakt').Value:=EdtNo.Text; // asumsikan EdtNo.Text = 'FB001'
ZQryBeli.Open;
Padahal SQL query yg dimasukkan dlm komponen ZQuery tsb tdk masalah jika dijalankan di Firebird secara langsung (saya memakai tool FlameRobin)
Udah googling tetapi saya tidak menemukan solusi permasalahan ini.
Mohon pencerahannya dari para master Delphi di sini.
Terima kasih
more 8 years ago
Penjahat
Halo delphi_boy...
Sepertinya letak kesalahan berada pada code yang tidak kamu tulis disini.
coba kirimkan unit.pas yang menampung syntax tersebut, hal ini sangat membantu untuk melakukan analisa
thanks...

more 8 years ago
musafir
ZQryBeli.ParamByName('nofakt').Value:=EdtNo.Text; // asumsikan EdtNo.Text = 'FB001'
ZQryBeli.Open;
apa karena ZQryBeli.Open;
tidak menggunakan ZQryBeli.executesql?
Kayaknya sehc....

more 8 years ago
delphi_boy
@Penjahat: Halo delphi_boy... Sepertinya letak kesalahan berada pada code yang tidak kamu tulis disini. coba kirimkan unit.pas yang menampung syntax tersebut, hal ini sangat membantu untuk melakukan analisa thanks...Ok, di sini ada 2 unit yg saling berhubungan. Yang pertama unit data modul tempat komponen2 database berada. Kodingnya sbb:
unit UDmJual;
interface
uses
SysUtils, Classes, DB, RpRave, RpDefine, RpBase, RpSystem, IdGlobal,
IdHash, IdHashMessageDigest, Dialogs, WinSkinData,
ZAbstractRODataset, ZAbstractDataset, ZAbstractTable, ZDataset,
ZAbstractConnection, ZConnection;
type
TDmJual = class(TDataModule)
DsBarang: TDataSource;
DsKategori: TDataSource;
DsSatuan: TDataSource;
DsSupplier: TDataSource;
DsPlgn: TDataSource;
DsBeli: TDataSource;
DsTempBeli: TDataSource;
DsJual: TDataSource;
DsJualTemp: TDataSource;
DsUser: TDataSource;
SkinData1: TSkinData;
ZKoneksi: TZConnection;
ZTbBarang: TZTable;
ZTbBarangKODEBRG: TStringField;
ZTbBarangNAMABRG: TStringField;
ZTbBarangKATEGORI: TStringField;
ZTbBarangSATUAN: TStringField;
ZTbBarangSTOK: TFloatField;
ZTbBarangHRGBELI: TFloatField;
ZTbBarangHRGJUAL: TFloatField;
ZTbBarangDISKON: TFloatField;
ZTbBarangTIPEDISK: TStringField;
ZTbBarangKET: TMemoField;
ZTbKategori: TZTable;
ZQuery1: TZQuery;
ZTbSatuan: TZTable;
ZTbSupplier: TZTable;
ZTbPlgn: TZTable;
ZTbBeli: TZTable;
ZTbBeliTemp: TZTable;
ZTbBeliTempKODEBRG: TStringField;
ZTbBeliTempQTY: TIntegerField;
ZTbBeliTempHARGA: TFloatField;
ZTbBeliTempKET: TStringField;
ZTbBeliTempTOTHRG: TCurrencyField;
ZTbBeliTempNAMABRG: TStringField;
ZTbJual: TZTable;
ZTbJualTemp: TZTable;
ZTbJualTempKODEBRG: TStringField;
ZTbJualTempQTY: TIntegerField;
ZTbJualTempHARGA: TFloatField;
ZTbJualTempKET: TStringField;
ZTbJualTempTOTHRG: TCurrencyField;
ZTbJualTempNAMABRG: TStringField;
ZTbUser: TZTable;
ZTbUserUSERID: TStringField;
ZTbUserPASS: TStringField;
ZTbUserUSERLEVEL: TSmallintField;
ZTbUserLASTLOG: TDateTimeField;
ZTbSetting: TZTable;
procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
procedure ZTbBarangKETGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure ZTbKategoriAfterScroll(DataSet: TDataSet);
procedure ZTbSatuanAfterScroll(DataSet: TDataSet);
procedure ZTbBeliTempCalcFields(DataSet: TDataSet);
procedure ZTbBeliTempAfterOpen(DataSet: TDataSet);
procedure ZTbBeliTempAfterPost(DataSet: TDataSet);
procedure ZTbBeliTempAfterDelete(DataSet: TDataSet);
procedure ZTbJualTempCalcFields(DataSet: TDataSet);
procedure ZTbJualTempAfterOpen(DataSet: TDataSet);
procedure ZTbJualTempAfterDelete(DataSet: TDataSet);
procedure ZTbJualTempAfterPost(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
userid:string;
userlevel:integer;
company:string;
end;
var
DmJual: TDmJual;
function MD5Hash(text:string):string;
implementation
{$R .dfm}
uses Forms, UKategori, USatuan, UAddEdtBeli, UAddEdtJual;
function MD5Hash(text:string):string;
begin
with TIdHashMessageDigest5.Create do
try
Result := TIdHash128.AsHex(HashValue(text));
finally
Free;
end;
end;
procedure TDmJual.DataModuleCreate(Sender: TObject);
begin
ZKoneksi.Database:=ExtractFilePath(Application.ExeName)+'Data\Data.fdb';
ZKoneksi.Connect;
ZTbSetting.Open;
ZTbSetting.Locate('var','company',[]);
company:=ZTbSetting.FieldByName('nilai').AsString;
ZTbSetting.Close;
end;
procedure TDmJual.DataModuleDestroy(Sender: TObject);
begin
ZKoneksi.Disconnect;
end;
procedure TDmJual.ZTbBarangKETGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if length(text)>30 then Text:=copy(Sender.AsString,1,30)+'...'
else Text:=trim(Sender.AsString);
end;
procedure TDmJual.ZTbKategoriAfterScroll(DataSet: TDataSet);
begin
if DataSet.State=dsBrowse then
with FrmKategori do
begin
EdtKode.Text:=DataSet.fieldbyname('kodekat').AsString;
EdtNama.Text:=DataSet.fieldbyname('namakat').AsString;
EdtKet.Text:=DataSet.fieldbyname('ket').AsString;
end;
end;
procedure TDmJual.ZTbSatuanAfterScroll(DataSet: TDataSet);
begin
if DataSet.State=dsBrowse then
with FrmSatuan do
begin
EdtKode.Text:=DataSet.fieldbyname('kodesat').AsString;
EdtNama.Text:=DataSet.fieldbyname('namasat').AsString;
end;
end;
procedure TDmJual.ZTbBeliTempCalcFields(DataSet: TDataSet);
begin
ZTbBeliTemp.FieldByName('tothrg').AsCurrency:=ZTbBeliTemp.FieldByName('qty').AsInteger
ZTbBeliTemp.FieldByName('harga').AsCurrency;
end;
procedure TDmJual.ZTbBeliTempAfterOpen(DataSet: TDataSet);
begin
DmJual.ZQuery1.SQL.Clear;
DmJual.ZQuery1.SQL.Add('select sum(qtyharga) from beli_temp');
DmJual.ZQuery1.Open;
FrmAddEdtBeli.EdtSubtot.Text:=DmJual.ZQuery1.Fields[0].AsString;
DmJual.ZQuery1.Close;
end;
procedure TDmJual.ZTbBeliTempAfterPost(DataSet: TDataSet);
begin
DmJual.ZQuery1.SQL.Clear;
DmJual.ZQuery1.SQL.Add('select sum(qty harga) from beli_temp');
DmJual.ZQuery1.Open;
FrmAddEdtBeli.EdtSubtot.Text:=DmJual.ZQuery1.Fields[0].AsString;
DmJual.ZQuery1.Close;
end;
procedure TDmJual.ZTbBeliTempAfterDelete(DataSet: TDataSet);
begin
DmJual.ZQuery1.SQL.Clear;
DmJual.ZQuery1.SQL.Add('select sum(qtyharga) from beli_temp');
DmJual.ZQuery1.Open;
FrmAddEdtBeli.EdtSubtot.Text:=DmJual.ZQuery1.Fields[0].AsString;
DmJual.ZQuery1.Close;
end;
procedure TDmJual.ZTbJualTempCalcFields(DataSet: TDataSet);
begin
ZTbJualTemp.FieldByName('tothrg').AsCurrency:=ZTbJualTemp.FieldByName('qty').AsInteger
ZTbJualTemp.FieldByName('harga').AsCurrency;
end;
procedure TDmJual.ZTbJualTempAfterOpen(DataSet: TDataSet);
begin
DmJual.ZQuery1.SQL.Clear;
DmJual.ZQuery1.SQL.Add('select sum(qtyharga) from jual_temp');
DmJual.ZQuery1.Open;
FrmAddEdtJual.EdtSubtot.Text:=DmJual.ZQuery1.Fields[0].AsString;
DmJual.ZQuery1.Close;
end;
procedure TDmJual.ZTbJualTempAfterDelete(DataSet: TDataSet);
begin
DmJual.ZQuery1.SQL.Clear;
DmJual.ZQuery1.SQL.Add('select sum(qty harga) from jual_temp');
DmJual.ZQuery1.Open;
FrmAddEdtJual.EdtSubtot.Text:=DmJual.ZQuery1.Fields[0].AsString;
DmJual.ZQuery1.Close;
end;
procedure TDmJual.ZTbJualTempAfterPost(DataSet: TDataSet);
begin
DmJual.ZQuery1.SQL.Clear;
DmJual.ZQuery1.SQL.Add('select sum(qtyharga) from jual_temp');
DmJual.ZQuery1.Open;
FrmAddEdtJual.EdtSubtot.Text:=DmJual.ZQuery1.Fields[0].AsString;
DmJual.ZQuery1.Close;
end;
end.
Satu lagi unit yg memuat koding pemanggilan query tadi:
unit UAddEdtBeli;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, ComCtrls, ExtCtrls, Menus, DB, ADODB,
RpCon, RpConDS, RpBase, RpSystem, RpDefine, RpRave, ZDataset,
ZAbstractRODataset, ZAbstractDataset, ZStoredProcedure;
type
TFrmAddEdtBeli = class(TForm)
GroupBox1: TGroupBox;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
EdtNo: TEdit;
DtpTgl: TDateTimePicker;
CboSupp: TComboBox;
EdtKet: TEdit;
DBGrid1: TDBGrid;
BtnSave: TButton;
BtnCancel: TButton;
LblSupp: TLabel;
EdtSubtot: TEdit;
Label5: TLabel;
PopupMenu1: TPopupMenu;
MnuTmbh: TMenuItem;
MnuHps: TMenuItem;
BtnPrint: TButton;
RvProject1: TRvProject;
RvSystem1: TRvSystem;
RvDSBeli: TRvDataSetConnection;
ZStoredProc1: TZStoredProc;
ZQryBeli: TZQuery;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure CboSuppSelect(Sender: TObject);
procedure BtnSaveClick(Sender: TObject);
procedure BtnCancelClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure MnuTmbhClick(Sender: TObject);
procedure MnuHpsClick(Sender: TObject);
procedure BtnPrintClick(Sender: TObject);
private
{ Private declarations }
public
//subtotal:currency;
editmode:boolean;
end;
var
FrmAddEdtBeli: TFrmAddEdtBeli;
implementation
uses UDmJual;
{$R .dfm}
procedure TFrmAddEdtBeli.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DmJual.ZTbBeliTemp.Close;
DmJual.ZQuery1.SQL.Clear;
DmJual.ZQuery1.SQL.Add('delete from beli_temp');
DmJual.ZQuery1.ExecSQL;
end;
procedure TFrmAddEdtBeli.CboSuppSelect(Sender: TObject);
begin
with DmJual.ZQuery1 do
begin
SQL.Clear;
SQL.Add('select namasup from supplier where kodesup='''+CboSupp.Text+'''');
Open;
LblSupp.Caption:=Fields[0].AsString;
Close;
end;
end;
procedure TFrmAddEdtBeli.BtnSaveClick(Sender: TObject);
begin
with DmJual do
begin
if length(trim(EdtNo.Text))=0 then
begin
MessageDlg('No. faktur pembelian belum diisi',mtWarning,[mbOK],0);
EdtNo.SetFocus;
exit;
end;
if length(trim(CboSupp.Text))=0 then
begin
MessageDlg('Supplier belum dipilih',mtWarning,[mbOK],0);
CboSupp.SetFocus;
exit;
end;
if length(trim(EdtKet.Text))=0 then
begin
MessageDlg('Keterangan belum diisi',mtWarning,[mbOK],0);
EdtKet.SetFocus;
exit;
end;
if ZTbBeliTemp.IsEmpty then
begin
MessageDlg('Detail pembelian belum diisi',mtWarning,[mbOK],0);
DBGrid1.SetFocus;
exit;
end;
ZTbBeliTemp.First;
while not ZTbBeliTemp.Eof do
begin
if length(trim(ZTbBeliTemp.FieldByName('kodebrg').AsString))=0 then
begin
MessageDlg('Kode barang belum diisi',mtWarning,[mbNo],0);
DBGrid1.SetFocus;
exit;
end;
DmJual.ZQuery1.SQL.Clear;
DmJual.ZQuery1.SQL.Add('select kodebrg from barang where kodebrg='''+
DBGrid1.DataSource.DataSet.FieldByName('kodebrg').AsString+'''');
DmJual.ZQuery1.Open;
if DmJual.ZQuery1.IsEmpty then
begin
MessageDlg('Kode barang "'+DBGrid1.DataSource.DataSet.FieldByName('kodebrg').
AsString+'" tidak ada',mtWarning,[mbNo],0);
DBGrid1.SetFocus;
exit;
end;
DmJual.ZQuery1.Close;
if ZTbBeliTemp.FieldByName('qty').AsInteger<=0 then
begin
MessageDlg('Jumlah harus lebih besar dari nol',mtWarning,[mbNo],0);
DBGrid1.SetFocus;
exit;
end;
if ZTbBeliTemp.FieldByName('harga').AsCurrency<=0 then
begin
MessageDlg('Harga harus lebih besar dari nol',mtWarning,[mbNo],0);
DBGrid1.SetFocus;
exit;
end;
ZTbBeliTemp.Next;
end;
if (not editmode) and ZTbBeli.Locate('nofaktur',EdtNo.Text,[]) then
begin
MessageDlg('No. faktur pembelian sudah ada',mtWarning,[mbOK],0);
EdtNo.SetFocus;
exit;
end;
// cek stok minus
if (DmJual.ZTbBeliTemp.State=dsEdit) or (DmJual.ZTbBeliTemp.State=dsInsert) then
DmJual.ZTbBeliTemp.Post;
ZStoredProc1.Close;
ZStoredProc1.ParamByName('fakturbeli').Value:=EdtNo.Text;
ZStoredProc1.Open;
while not ZStoredProc1.Eof do
begin
if ZStoredProc1.FieldByName('akhir').AsInteger<0 then
begin
MessageDlg('Kode barang "'+ZStoredProc1.fieldbyname('kodebrg').AsString
+'" stok tidak cukup. Stok saat ini adalah '+ZStoredProc1.
fieldbyname('allqty').AsString,mtWarning,[mbOK],0);
exit;
end;
ZStoredProc1.Next;
end;
ZKoneksi.StartTransaction;
try
if editmode then ZTbBeli.Edit else ZTbBeli.Append;
ZTbBeli.FieldByName('nofaktur').AsString:=EdtNo.Text;
ZTbBeli.FieldByName('tanggal').AsDateTime:=DtpTgl.Date;
ZTbBeli.FieldByName('supplier').AsString:=CboSupp.Text;
ZTbBeli.FieldByName('ket').AsString:=EdtKet.Text;
ZTbBeli.Post;
if editmode then
begin
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('delete from beli_detil where nofaktur='''+EdtNo.Text+'''');
ZQuery1.ExecSQL;
end;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('INSERT INTO beli_detil(nofaktur,kodebrg,qty,harga,ket) SELECT '''
+EdtNo.Text+''',kodebrg,qty,harga,ket FROM beli_temp');
ZQuery1.ExecSQL;
if not editmode then
begin
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('INSERT INTO fifo(notrans,trans) values ('''+EdtNo.Text+
''',''B'')');
ZQuery1.ExecSQL;
end;
ZKoneksi.Commit;
MessageDlg('Data telah disimpan',mtInformation,[mbOK],0);
//Close;
BtnSave.Enabled:=editmode;
BtnCancel.Caption:='Tutup';
except
on e:EDatabaseError do
begin
MessageDlg('Data gagal disimpan.'+#13+e.Message,mtError,[mbOK],0);
ZKoneksi.Rollback;
end;
end;
end;
end;
procedure TFrmAddEdtBeli.BtnCancelClick(Sender: TObject);
begin
DmJual.ZTbBeli.Cancel;
if DmJual.ZKoneksi.InTransaction then DmJual.ZKoneksi.Rollback;
Close;
end;
procedure TFrmAddEdtBeli.FormShow(Sender: TObject);
begin
EdtSubtot.Text:='0';
with DmJual.ZQuery1 do
begin
SQL.Clear;
SQL.Add('select kodesup from supplier');
Open;
while not Eof do
begin
CboSupp.Items.Add(Fields[0].AsString);
Next;
end;
Close;
end;
if editmode then
begin
Caption:='Edit Data Pembelian';
DtpTgl.SetFocus;
DmJual.ZQuery1.SQL.Clear;
DmJual.ZQuery1.SQL.Add('INSERT INTO beli_temp(kodebrg,qty,harga,ket) SELECT kodebrg,'+
'qty,harga,ket FROM beli_detil WHERE nofaktur='''+EdtNo.Text+'''');
DmJual.ZQuery1.ExecSQL;
end
else
begin
Caption:='Tambah Data Pembelian';
EdtNo.SetFocus;
end;
DmJual.ZTbBeliTemp.Open;
end;
procedure TFrmAddEdtBeli.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_RETURN then
if not (ActiveControl is TDBGrid) then Perform(WM_NEXTDLGCTL, 0, 0);
end;
procedure TFrmAddEdtBeli.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
if DBGrid1.selectedindex < (DBGrid1.fieldcount -1) then
begin
DBGrid1.selectedindex := DBGrid1.selectedindex +1;
if DBGrid1.SelectedIndex=1 then
begin
if length(trim(DBGrid1.DataSource.DataSet.Fields[0].AsString))=0 then
begin
MessageDlg('Kode barang belum diisi',mtWarning,[mbNo],0);
DBGrid1.selectedindex := DBGrid1.selectedindex -1;
exit;
end;
DmJual.ZQuery1.SQL.Clear;
DmJual.ZQuery1.SQL.Add('select kodebrg from barang where kodebrg='''+
DBGrid1.DataSource.DataSet.FieldByName('kodebrg').AsString+'''');
DmJual.ZQuery1.Open;
if DmJual.ZQuery1.IsEmpty then
begin
MessageDlg('Kode barang tidak ada',mtWarning,[mbNo],0);
DBGrid1.selectedindex := DBGrid1.selectedindex -1;
exit;
end;
DmJual.ZQuery1.Close;
DmJual.ZQuery1.SQL.Clear;
DmJual.ZQuery1.SQL.Add('select hrgbeli from barang where kodebrg='''+
DBGrid1.DataSource.DataSet.FieldByName('kodebrg').AsString+'''');
DmJual.ZQuery1.Open;
if (DBGrid1.DataSource.DataSet.State=dsEdit) or (DBGrid1.DataSource.DataSet.State=dsInsert) then
DBGrid1.DataSource.DataSet.FieldByName('harga').AsCurrency:=DmJual.ZQuery1.Fields[0].AsCurrency;
DmJual.ZQuery1.Close;
end;
if DBGrid1.SelectedIndex=3 then
begin
if DBGrid1.DataSource.DataSet.Fields[2].AsInteger<=0 then
begin
MessageDlg('Jumlah harus besar dari nol',mtWarning,[mbNo],0);
DBGrid1.selectedindex := DBGrid1.selectedindex -1;
exit;
end;
end;
if DBGrid1.SelectedIndex=4 then
begin
if DBGrid1.DataSource.DataSet.Fields[3].AsCurrency<=0 then
begin
MessageDlg('Harga harus besar dari nol',mtWarning,[mbNo],0);
DBGrid1.selectedindex := DBGrid1.selectedindex -1;
exit;
end;
end;
end
else
begin
if DBGrid1.DataSource.DataSet.RecNo=DBGrid1.DataSource.DataSet.RecordCount then
DBGrid1.DataSource.DataSet.Append
else DBGrid1.DataSource.DataSet.Next;
DBGrid1.selectedindex := 0;
end;
end;
end;
procedure TFrmAddEdtBeli.MnuTmbhClick(Sender: TObject);
begin
DBGrid1.DataSource.DataSet.Insert;
end;
procedure TFrmAddEdtBeli.MnuHpsClick(Sender: TObject);
begin
if not DBGrid1.DataSource.DataSet.IsEmpty then
DBGrid1.DataSource.DataSet.Delete;
end;
procedure TFrmAddEdtBeli.BtnPrintClick(Sender: TObject);
begin
// dari hasil debugging di sini terjadi error Access violation
ZQryBeli.ParamByName('nofakt').Value:=EdtNo.Text;
ZQryBeli.Open;
RvProject1.SetParam('perusahaan',DmJual.company);
RvProject1.ProjectFile:='Laporan\FakturBeli.rav';
RvProject1.Execute;
ZQryBeli.Close;
end;
end.

more 8 years ago
delphi_boy
@musafir: ZQryBeli.ParamByName('nofakt').Value:=EdtNo.Text; // asumsikan EdtNo.Text = 'FB001' ZQryBeli.Open; apa karena ZQryBeli.Open; tidak menggunakan ZQryBeli.executesql? Kayaknya sehc....Yg ada ZQryeli.ExecSQL tetapi itu untuk query yg tidak mengembalikan resultset, spt UPDATE, DELETE, INSERT, dst; untuk SELECT memang memakai method Open.

more 8 years ago
zuryafix
Nah saat mengeksekusi perintah berikut di dalam method OnClick pada button terjadi error "Access violation at address 00406C52 in module 'Project1.exe'. Read of address 66646866":Kalo boleh tau, button yang diklik itu apakah memanggil button pemanggilan form atau bukan? Jika event on clicknya merupakan pemanggilan form, artinya ada salah dalam pemesanan memori dalam atribut kapan saat memori difungsikan dan kapan saat memori dilepas. :D

more 8 years ago
delphi_boy
@zuryafix:Bukan pemanggilan form, tetapi eksekusi Rave Report:Nah saat mengeksekusi perintah berikut di dalam method OnClick pada button terjadi error "Access violation at address 00406C52 in module 'Project1.exe'. Read of address 66646866":Kalo boleh tau, button yang diklik itu apakah memanggil button pemanggilan form atau bukan? Jika event on clicknya merupakan pemanggilan form, artinya ada salah dalam pemesanan memori dalam atribut kapan saat memori difungsikan dan kapan saat memori dilepas. :D
procedure TFrmAddEdtBeli.BtnPrintClick(Sender: TObject);
begin
// dari hasil debugging di sini terjadi error Access violation
ZQryBeli.ParamByName('nofakt').Value:=EdtNo.Text;
ZQryBeli.Open;
RvProject1.SetParam('perusahaan',DmJual.company);
RvProject1.ProjectFile:='Laporan\FakturBeli.rav';
RvProject1.Execute;
ZQryBeli.Close;
end;
Tapi udah di-debugging gak ada masalah di pemanggilan laporan Rave Report-nya, tetapi di pemanggilan ZQryBeli.Open [bisa dipastikan dengan menghilangkan perintah eksekusi laporan Rave Report][/quote]
more 8 years ago
Penjahat
Halo delphi_boy....
codingnya lumayan complicated....
terlalun banyak TDataSetNotifyEvent, AfterDelete, AfterPost, AfterScroll, AfterOpen....dll
tapi sepertinya semua event tersebut tidak ada yg berhubungan dengan ZQryBeli, apakah saya benar ?
kalau iya coba begini...
1,
pada query ini;
SELECT beli., beli_detil. , supplier.namasup, barang.namabrg
FROM barang INNER JOIN (supplier INNER JOIN (beli INNER JOIN beli_detil
ON beli.nofaktur = beli_detil.nofaktur) ON supplier.kodesup = beli.supplier)
ON barang.kodebrg = beli_detil.kodebrg
where beli.nofaktur = :nofakt
:nofakt diganti dengan nilai asli (yg diharapkan). artinya sementara tidak passing via parameter
kemudian... comment dulu beberapa line code berikut:
procedure TFrmAddEdtBeli.BtnPrintClick(Sender: TObject);
begin
// dari hasil debugging di sini terjadi error Access violation
// ZQryBeli.ParamByName('nofakt').Value:=EdtNo.Text;
ZQryBeli.Open;
// RvProject1.SetParam('perusahaan',DmJual.company);
// RvProject1.ProjectFile:='Laporan\FakturBeli.rav';
// RvProject1.Execute;
ZQryBeli.Close;
end;
berikutnya beritahu saya apa yg terjadi.....
more 8 years ago
delphi_boy
@Penjahat: Halo delphi_boy.... codingnya lumayan complicated.... terlalun banyak TDataSetNotifyEvent, AfterDelete, AfterPost, AfterScroll, AfterOpen....dll tapi sepertinya semua event tersebut tidak ada yg berhubungan dengan ZQryBeli, apakah saya benar ? kalau iya coba begini... 1, pada query ini;Iya, agak complicated memang krn pengembangan dr database sebelumnya yg menggunakan Ms Access... :D Sudah coba spt saran sdr. Penjahat, saya ganti query-nya menjadi::nofakt diganti dengan nilai asli (yg diharapkan). artinya sementara tidak passing via parameter kemudian... comment dulu beberapa line code berikut:SELECT beli., beli_detil. , supplier.namasup, barang.namabrg FROM barang INNER JOIN (supplier INNER JOIN (beli INNER JOIN beli_detil ON beli.nofaktur = beli_detil.nofaktur) ON supplier.kodesup = beli.supplier) ON barang.kodebrg = beli_detil.kodebrg where beli.nofaktur = :nofakt
berikutnya beritahu saya apa yg terjadi.....procedure TFrmAddEdtBeli.BtnPrintClick(Sender: TObject); begin // dari hasil debugging di sini terjadi error Access violation // ZQryBeli.ParamByName('nofakt').Value:=EdtNo.Text; ZQryBeli.Open; // RvProject1.SetParam('perusahaan',DmJual.company); // RvProject1.ProjectFile:='Laporan\FakturBeli.rav'; // RvProject1.Execute; ZQryBeli.Close; end;
SELECT beli., beli_detil. , supplier.namasup, barang.namabrg
FROM barang INNER JOIN (supplier INNER JOIN (beli INNER JOIN beli_detil
ON beli.nofaktur = beli_detil.nofaktur) ON supplier.kodesup = beli.supplier)
ON barang.kodebrg = beli_detil.kodebrg
where beli.nofaktur = 'FB001'
Dan pada event button click-nya sudah di-comment spt yg anda sarankan, tetapi hasilnya tetap muncul error Access violation yg sama (alamat memorinya jg sama)
more 8 years ago
Penjahat
Query seperti ini;
SELECT beli., beli_detil. , supplier.namasup, barang.namabrg
FROM barang INNER JOIN (supplier INNER JOIN (beli INNER JOIN beli_detil
ON beli.nofaktur = beli_detil.nofaktur) ON supplier.kodesup = beli.supplier)
ON barang.kodebrg = beli_detil.kodebrg
where beli.nofaktur = 'FB001'
1. query tersebut bisa berjalan lancar pada FlameRobin, betul?....
2. Tidak ada satu parameterpun pada Component ZQryBeli, betul?...
3. Tidak ada satupun TDataSetNotifyEvent (afteropen, beforeclose dll..) yang di assign ke ZQryBeli, betul?...
4. Tidak ada satupun code yang berhubungan dengan ZQryBeli kecuali ZQryBeli.Open, betul?...
kalau memang itu betul semua, ma'af saya tidak bisa memberikan solusi, kecuali 1 saran yang menurut saya hanya ini penyebabnya:
cek apakah ZQryBeli sudah di create?.more ...
- Pages:
- 1
- 2
reply |
Report Obsolete
Last Articles
- Project Group dalam Lazarus
- FastPlaz Database Explorer
- Release: FastPlaz Super Mom v0.12.22
- PascalClass #3: Web Development with Free Pascal
- Makna Pascal di Pascal Indonesia
- Kulgram : Instalasi Lazarus di Perangkat Berbasis ARM
- PascalClass #1: Analisa Database dan Machine Learning
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
- Mengenal OXYGENE – Pascal For .NET
- PascalTalk #5: UX: Research, Design and Engineer
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 3 months ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 3 months ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 months ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 months ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 months ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 months ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 1 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 8 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 8 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 8 years ago
Random Topic
- tanya tentang open file tanpa open dialog
by dpox in Network, Files, I/O & System more 13 years ago - Membuat program dengan delphi tapi bisa jalan didos
by Zulkarnain in Reporting more 13 years ago - download comp Barcode kok ga bisa
by dinox in Network, Files, I/O & System more 15 years ago - fungsi count
by novicute in Paradox more 14 years ago - artikel
by _aa_ in Network, Files, I/O & System more 15 years ago - ask program sederhana client server
by don2103 in MsSQL more 10 years ago - Laporan yg bisa di Edit2 (fastreport)?
by archvile in Reporting more 12 years ago - [ASK ]Size Form Aplikasi?
by pai_chan in Tip n Trik Pemrograman more 12 years ago - Aplikasi instaler
by yufan in Multimedia & Graphic Enhancement more 8 years ago - Zeos Table "is busy"?
by ekosch in Tutorial & Community Project more 13 years ago