Arsip: Validasi sesuatu yang unique...
                
                   more 18 years ago
                  
              Random
Maaf kalo judulnya ga terlalu berkaitan, soalnya bingung nentuin judul....
Katakanlah di sebuah form isinya ada : 1 ComboBox serta 2 EditBox.
Isi ComboBox itu hasil query dari table item (mis : handphone, meja, pensil, dll)
EditBox 1 tempat user isi qty yg dia mau minta. EditBox 2 bakalan jadi tempat dimana qty tersebut dikalikan secara otomatis dengan harga item.
Penyelesaiannya kepikiran :
Ambil isi ComboBox, locate nama item tersebut di table item. Ambil harganya, trus kali-in deh sama qty. Tapi ini cuma bisa berhasil kalo nama item-nya unique, kalo ada beberapa item yang namanya sama bisa bikin ngaco kan. Berarti musti bikin unique constraint lagi kan di SQL Server 2000. 
Tapi masalahnya, _ketika awalnya baru mau input item_ , ada ga validasi sederhana untuk menghadapi kemungkinan nama item double ? Apa tetep musti diquery -> select item_name from tb_item where item_name='x', trus diliat hasilnya eof atau ga ?
Atau ada cara lain yang lebih baik (dan yang jelas ga malah tambah bikin ribet) ? Mungkinkah ComboBox menyimpan 2 value ? Jadi bukan cuma item_name-nya aja yang disimpan, tapi juga item_price-nya (jadinya ketika item tersebut diselect, bisa langsung ngambil item_price-nya buat dikaliin?
                
                
                   more 18 years ago
                  
              DelphiExpert
jangan pakai nama item utk locate record, gunakan ItemID (key).
waktu memasukkan data ke ComboBox ID harus disertakan, caranya terserah dikau.
bisa dimasukkan dengan model delimiter '=', atau disisipin sebagai object.
contoh dengan delimiter:
                
ComboBox1.Items.Values['001']:= 'Mouse';
ComboBox1.Items.Values['002']:= 'Keyboard';
... 
// cara baca key-nya:
Key:= ComboBox1.Items.Names[Index];
TableX.Location(.. Key);
                
                   more 18 years ago
                  
              cyber_hecker
kalo data memang di load dari query, kenapa tidak menggunakan DBLookupComboBox saja ? lebih simple, kita sudah tidak melakukan pencarian lagi... tetapi langsung mengambil nilai yang sudah tersedia dari querynya.
koding :
                
koding :
unit uFMain;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, DBCtrls, Mask, Buttons, ExtCtrls;
type
  TFMain = class(TForm)
    adoCon: TADOConnection;
    qItem: TADOQuery;
    qItemID: TAutoIncField;
    qItemnm_barang: TWideStringField;
    qItemharga: TFloatField;
    qItemsKet: TWideStringField;
    dsItem: TDataSource;
    DBLookupComboBox1: TDBLookupComboBox;
    Label1: TLabel;
    Label2: TLabel;
    DBEdit1: TDBEdit;
    Edit1: TEdit;
    Edit2: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    BitBtn1: TBitBtn;
    Bevel1: TBevel;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  FMain: TFMain;
implementation
{$R .dfm}
procedure TFMain.FormCreate(Sender: TObject);
begin
  qItem.Open;
end;
procedure TFMain.BitBtn1Click(Sender: TObject);
begin
  Edit2.Text := FormatFloat('0.##',StrToFloat(Edit1.Text)  
    qItem.FieldByName('harga').AsFloat);
end;
end.
source formnya (untuk melihat setting properties komponen)
object FMain: TFMain
  Left = 192
  Top = 109
  Width = 321
  Height = 206
  Caption = 'Pricing by cyber_hecker'
  Color = clBtnFace
  Font.Charset = ANSI_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = 
  OldCreateOrder = False
  Position = poScreenCenter
  ShowHint = True
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object Label1: TLabel
    Left = 16
    Top = 16
    Width = 75
    Height = 13
    Caption = 'Daftar Barang :'
  end
  object Label2: TLabel
    Left = 55
    Top = 40
    Width = 36
    Height = 13
    Caption = 'Harga :'
    FocusControl = DBEdit1
  end
  object Label3: TLabel
    Left = 51
    Top = 80
    Width = 40
    Height = 13
    Caption = 'Jumlah :'
  end
  object Label4: TLabel
    Left = 60
    Top = 104
    Width = 31
    Height = 13
    Caption = 'Total :'
  end
  object Bevel1: TBevel
    Left = 8
    Top = 8
    Width = 297
    Height = 129
  end
  object DBLookupComboBox1: TDBLookupComboBox
    Left = 104
    Top = 16
    Width = 193
    Height = 19
    Ctl3D = False
    KeyField = 'ID'
    ListField = 'sKet'
    ListSource = dsItem
    ParentCtl3D = False
    TabOrder = 0
  end
  object DBEdit1: TDBEdit
    Left = 104
    Top = 40
    Width = 134
    Height = 19
    TabStop = False
    Color = clInfoBk
    Ctl3D = False
    DataField = 'harga'
    DataSource = dsItem
    ParentCtl3D = False
    ReadOnly = True
    TabOrder = 1
  end
  object Edit1: TEdit
    Left = 104
    Top = 80
    Width = 121
    Height = 19
    Ctl3D = False
    ParentCtl3D = False
    TabOrder = 2
    Text = '0'
  end
  object Edit2: TEdit
    Left = 104
    Top = 104
    Width = 121
    Height = 19
    Ctl3D = False
    ParentCtl3D = False
    TabOrder = 3
    Text = '0'
  end
  object BitBtn1: TBitBtn
    Left = 224
    Top = 144
    Width = 75
    Height = 25
    Caption = 'Hitung'
    TabOrder = 4
    OnClick = BitBtn1Click
  end
  object adoCon: TADOConnection
    ConnectionString = 
      'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dbCyber.mdb;Persist' +
      ' Security Info=False'
    LoginPrompt = False
    Mode = cmShareDenyNone
    Provider = 'Microsoft.Jet.OLEDB.4.0'
    Left = 16
    Top = 128
  end
  object qItem: TADOQuery
    Connection = adoCon
    CursorType = ctStatic
    Parameters = <>
    SQL.Strings = (
      
        'SELECT tbBarang.ID, tbBarang.nm_barang, tbBarang.harga, [tbBaran' +
        'g]![ID] & '' - '' & [tbBarang]![nm_barang] AS sKet'
      'FROM tbBarang;')
    Left = 56
    Top = 128
    object qItemID: TAutoIncField
      FieldName = 'ID'
      ReadOnly = True
    end
    object qItemnm_barang: TWideStringField
      FieldName = 'nm_barang'
      Size = 50
    end
    object qItemharga: TFloatField
      FieldName = 'harga'
    end
    object qItemsKet: TWideStringField
      FieldName = 'sKet'
      ReadOnly = True
      Size = 255
    end
  end
  object dsItem: TDataSource
    DataSet = qItem
    Left = 72
    Top = 144
  end
end
sorry.. contoh source belum bisa di upload.. komputer disini lelet banget :D
                
                   more 18 years ago
                  
              Random
@ both :
Thanks. Kebetulan saya baru nyoba saran cyber_hecker dan berhasil. Tapi yang dibilang DelphiExpert kayaknya saya ngerti maksudnya. :)
                
                
                   more 18 years ago
                  
              Random
DBLookUpComboBox ga bisa buat nampilin data dengan cara "DBLookUpComboBox1.text := dst" ya ? Dibilangnya statusnya readonly atau apa gitu.
                
                
                   more 18 years ago
                  
              cyber_hecker
nilai pada DBLookupComboBox tidak bisa di set kayak gitu, karena datanya diambil lewat database. jika ingin mengeset nilai DBLookupComboBox, harus KeyValue nya yang diset. contoh :
                DBLookupComboBox1.KeyValue := 3;
                
                   more 18 years ago
                  
              Random
Berarti untuk beberapa kasus masih mending pake ComboBox biasa ya. Soalnya ada sebuah ComboBox di form saya yang berfungsi ganda....
1. Kalo form baru dibuka, sekedar untuk menampilkan record terakhir (misal : city) yang diambil dari TQuery.
2. Kalo mau tambah data baru, dibuat untuk milih (dalam hal ini city)
... dan kalau 'maksa' pake DBLookupComboBox berarti saya harus : tambahin TDataSource lagi buat nampung isi TQuery, pindahin property ListSource di coding (karena TDataSource-nya beda), trus ubah property KeyValue-nya. Malah jadi ribet. Hehehe.
CMIIW ?
                more ...
              - Pages:
 - 1
 
                    
                     reply  |
                     Report Obsolete
                  
                AI Forward
            
🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now: 
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 5 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 5 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
 - Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 13 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 13 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 13 years ago 
Random Topic
- Connection to Server Part2
by canoey in Network, Files, I/O & System more 19 years ago - DICARI: produsen kaos delphi-id
by simba in OOT more 18 years ago - DBedit pada table
by nurez in Tip n Trik Pemrograman more 19 years ago - Nanya QuickReport Di Delphi 7
by isoke in Hal umum tentang Pascal Indonesia more 19 years ago - Rubah Program Dari Komputer Lain (di tempat lain)
by faathir in Network, Files, I/O & System more 18 years ago - MySQL = Sun
by LuriDarmawan in MySQL more 17 years ago - Install DevExpress ExpressQuantumGrid Suite v5.15 ??
by javaman in Hal umum tentang Pascal Indonesia more 18 years ago - if pada memo
by nurez in Tip n Trik Pemrograman more 18 years ago - Set lebar grid otomatis
by chandra in Tutorial & Community Project more 16 years ago - Menginput nilai numeric(real) dengan SQL
by umarbakri in Hal umum tentang Pascal Indonesia more 18 years ago