Arsip: Zeos 7 ZQuery error Access violation saat open

more 11 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 11 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 11 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 11 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 11 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 11 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 11 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 11 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 11 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 10 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
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 2 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 2 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 3 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 10 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 10 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 10 years ago
Random Topic
- NextGrid Kosong,,Kenapa Yach,,???
by listia in Hal umum tentang Pascal Indonesia more 15 years ago - kecepatan rata2 access
by nurez in Hal umum tentang Pascal Indonesia more 16 years ago - Huruf Arab
by armanefendi in Tip n Trik Pemrograman more 15 years ago - SARAN: View Posts Since Last Visit
by bangfauzan in Kritik & Saran more 16 years ago - DBExpress MySQL 5.0.19
by pas_asep in MySQL more 15 years ago - memfungsikan keyboard spt keypad Hp
by sky47 in Tip n Trik Pemrograman more 13 years ago - help error... lagi
by putukaca in Hal umum tentang Pascal Indonesia more 16 years ago - Menampilkan Dbgrid Dg Script Ndiri
by saysansay in Tip n Trik Pemrograman more 17 years ago - Bikin Program Anmtrian Bank
by krishy in Tip n Trik Pemrograman more 15 years ago - Bgmana Cara Embed Form DLL to TTabsheet di Form Pemaggil ?
by henry_sys in Form Enhancement & Graphical Controls more 11 years ago