Arsip: Looping didalam looping ?

 
user image
more 17 years ago

javaman

hallo semua aku mo mohon sedikit bantuan, bagaimana proses looping didalam looping. maksudnya bila kita ada proses looping kemudian didalamnya ada looping lagi kenapa program ndak selesai2 (looping terus) ya ?? contohnya seperti ini

procedure TfrmPosting.Button2Click(Sender: TObject);
 var xInv_code : string ;
     nNilAwal : double;
begin
// Cek kartu stok
ADOKrtstmdb.SQL.Clear;
ADOKrtstmdb.Active := false;
ADOKrtstmdb.SQL.Text := 'Select TRX_CODE, TRX_DATE, TRX_JENS, TRX_DBCR, '+
                        'INV_CODE, TRX_KUAN,TRX_AMNT, TRX_HPOK, TRX_HAVG from '+
                        'KRTSTMDB ORDER BY TRX_DATE, INV_CODE, TRX_DBCR';
ADOKrtstmdb.Active := True;
  // cek saldo awal 

ADOKrtstmdb.First;
  while not ADOKrtstmdb.Eof do
    begin
            xInv_code :=  ADOKrtstmdb.FieldByName('INV_CODE').AsString;
            ADOInvenddb.SQL.clear ;
            ADOInvenddb.Active := false;
            ADOInvenddb.SQL.Text := 'select INV_CODE,QTY_AWAL, NIL_AWAL from INVENDDB ' +
                                    ' WHERE INV_CODE = ' + Quotedstr(xInv_code) + 'order by INV_CODE';
            ADOInvenddb.Active := true;
              // cari data dari saldo awalnya dulu
              // simpan hppnya
            if  ADOInvenddb.RecordCount = 1 then
            begin
              nNilAwal := ADOInvenddb.FieldByName('NIL_AWAL').AsFloat ;
            end;
          // ulang selama kode sama
          while ADOKrtstmdb.FieldByName('INV_CODE').AsString = xInv_code do
          begin
           // if jenisnya debet tambahkan or Kredit kurangi
            //  ShowMessage('Belum nyampe');
              if  ADOKrtstmdb.FieldByName('TRX_DBCR').AsString = 'K' then
              begin
              QueryUpdate.SQL.Text := 'UPDATE krtstmdb SET TRX_HAVG='+ floattostr(nNilAwal) +
                                      'WHERE INV_CODE='+ Quotedstr(xInv_code) ;
              QueryUpdate.ExecSQL
              end;
              //txtPosting.text := xInv_code ;    
          /        ADOKrtstmdb.Next;
          end;
     // ADOKrtstmdb.Next;
    end;
end;
untuk query nextnya udah saya pindah2 tapi ttp aja program looping terus, mohon bantuannya ya. sebelumnya terima kasih
user image
more 17 years ago

Manz

Ya jelas lah gak bisa selesai wong ADOKrtstmdb itu di loop dari parent loop kemudian di loop lagi di nested loopnya

  while not ADOKrtstmdb.Eof do
    begin
      xInv_code :=  ADOKrtstmdb.FieldByName('INV_CODE').AsString;
      ADOInvenddb.SQL.clear ;
      ADOInvenddb.Active := false;
      ADOInvenddb.SQL.Text := 'select INV_CODE,QTY_AWAL, NIL_AWAL from INVENDDB ' +
                              ' WHERE INV_CODE = ' + Quotedstr(xInv_code) + 'order by INV_CODE';
      ADOInvenddb.Active := true;
 
      if  ADOInvenddb.RecordCount = 1 then
      begin
        nNilAwal := ADOInvenddb.FieldByName('NIL_AWAL').AsFloat ;
      end;
      
      QueryUpdate.SQL.Text := 'UPDATE krtstmdb SET TRX_HAVG='+ floattostr(nNilAwal) +
                              'WHERE INV_CODE='+ Quotedstr(xInv_code) +
                              'And TRX_DBCR = ''K''';
      QueryUpdate.ExecSQL
 
      ADOKrtstmdb.Next;
    end;
Saya ubah seperti diatas ... tapi belon dicobain .... :mrgreen: cobain dulu deh kalo jalan kasih tahu ... :mrgreen: :mrgreen: Perlu diketahui untuk Execute SQL tidak perlu di looping, karena dia akan looping sendiri di engine SQL nya ... :mrgreen:
user image
more 17 years ago

javaman

Makacih Mas, Program diatas adalah program posting stok untuk mencari Hppnya (hpp persediaan system standard) kalau kita ndak looping lagi untuk setiap barang maka (setiap barang harus punya saldo awal atau hpp sendiri2) saldo awalnya akan sama semua dan saldo akan bertambah HPPnya bila ada transaksi yang bersifat 'D'. Mohon pencerahannya lagi mas, maturnuwun, makacih, thank you sebelumnya
user image
more 17 years ago

Manz

Oic... kalo begitu logika nya begini ajah pake SQL 1. Update dulu untuk saldo awal / hpp tiap barang 2. Transaksi 'K' kalo gak salah untuk update awal dari hpp nya 3. Select yang bersifat transaksi 'D' di "where" nya itu dan kemudian ditambahkan ke saldo awal / hpp tersebut. moga mbantu :mrgree:
user image
more 17 years ago

javaman

maaf mas, trus proses sqlnya atau looping gimana ya ?? mohon petunjuk selanjutnya
user image
more 17 years ago

Manz

bisa pake source code diatas dan untuk wherenya dari K ganti menjadi D
more ...
  • Pages:
  • 1
Share to
Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com