BMS-HOSxP Community

HOSxP => Delphi / Pascal => ข้อความที่เริ่มโดย: ittipol ที่ พฤศจิกายน 09, 2011, 11:00:19 AM

หัวข้อ: Delphi : Number VN
เริ่มหัวข้อโดย: ittipol ที่ พฤศจิกายน 09, 2011, 11:00:19 AM
อาจารย์ทุกท่านนะครับ
คือผมอยากสร้างฐานข้อมูลที่บันทึกค่าแบบ
VN : 541109110504 แบบที่อาจารย์ทำในการ
ใช้งาน vn_stat นะครับไม่รู้ว่าต้องทำแบบไหนครับ
ขออาจารย์ทุกท่านแนะนำด้สนนะครับ
ขอบคุณครับ
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: Multithreading ที่ พฤศจิกายน 09, 2011, 11:37:43 AM
-อยากสร้างฐานข้อมูล
CREATE DATABASE yourdatabasename;

-ที่บันทึกค่าแบบ VN : 541109110504 แบบที่อาจารย์ทำในการใช้งาน vn_stat
CREATE TABLE vn_stat (  VN  INT);
insert into vn_stat (VN) value (541109110504);
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: ittipol ที่ พฤศจิกายน 09, 2011, 14:45:07 PM
คือแบบนี้นะครับ
จากที่เราเพิ่มข้อมูลไปในฐานข้อมูล
โปรแกรมก็จะให้ใส่ค่าตามลำดับ คือ 1,2,3,4
แต่ที่อยากได้คือให้บันทึกข้อมูลลงไปในแบบ VN : 5411100403048 นะครับ
ช่วยแนะนำแนะครับ ( ในการสร้างโปรแกรมจาก Delphi )
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: Multithreading ที่ พฤศจิกายน 09, 2011, 19:23:58 PM
auto id generation เปล่า
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: nummon ที่ พฤศจิกายน 10, 2011, 08:17:12 AM
  repeat
          vn := formatdatetime('eemmddhhnnss', now);
  until ((getsqldata('select count(*) as cc from TABLEX where vn = "' + vn
          +'"') = 0)

จาก ตย. source code hosxp อ.ชัยพร
vn ได้จาก formatdatetime function
แต่ต้อง checkไม่ให้ซ้ำ ใน table โดย loop repeat... until ...
แล้วจึงนำ vn ไปใช้ เป็น key fieldได้


หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: ittipol ที่ พฤศจิกายน 10, 2011, 09:36:58 AM
ครับประมาณนี้ครับเดี่ยวผมทดลองทำครับ
ขอบคุณอาจารย์ครับ
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: ittipol ที่ พฤศจิกายน 22, 2011, 14:16:38 PM
  repeat
          vn := formatdatetime('eemmddhhnnss', now);
  until ((getsqldata('select count(*) as cc from TABLEX where vn = "' + vn
          +'"') = 0)

จาก ตย. source code hosxp อ.ชัยพร
vn ได้จาก formatdatetime function
แต่ต้อง checkไม่ให้ซ้ำ ใน table โดย loop repeat... until ...
แล้วจึงนำ vn ไปใช้ เป็น key fieldได้



นำไปใส่ตรงไหนคัรบ
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: ittipol ที่ มกราคม 25, 2012, 10:14:22 AM
เรียนอาจารย์ทุกท่านนะครับ
ผมต้องการ Add ข้อมูลใหม่นะครับ โดยให้เป็นแบบ VN
แต่ทดลองทำแล้ว มันไม่เริ่มต้นข้อมูลแบบว่างๆๆใหม่นะครับ
กลับเอาข้อมูลเดิมมาให้เราแก้ไขแทน เลยอยากให้อาจาร์ลองตรวจสอบดูให้หน่อยครับ
ขอคำแนะนำด้วยครับขอบคุณครับ

procedure TListVnForm.cxButton2Click(Sender: TObject);
begin //บันทึก
    //if ListMyQuery.State in ([dsInsert,dsEdit]) then   // บันทึกและแก้ไข้ข้อมูล
      //MyQueryPersonnelAdd.edit;
      //MyQueryPersonnel.fieldByName('personnel_id').AsInteger;
       ListMyQuery.State in ([dsInsert,dsEdit]);
        ListMyQuery.fieldByName('vn').Text;
      //ListMyQuery.Insert;
      DBEdit1.Text:=formatdatetime('eemmddhhmmss',now);
      ListMyQuery.Post;
    ShowMessage('เพิ่มข้อมูลสำเร็จ');
    Close;
end;

หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: farmonline ที่ มกราคม 26, 2012, 15:46:08 PM
เรียนอาจารย์ทุกท่านนะครับ
ผมต้องการ Add ข้อมูลใหม่นะครับ โดยให้เป็นแบบ VN
แต่ทดลองทำแล้ว มันไม่เริ่มต้นข้อมูลแบบว่างๆๆใหม่นะครับ
กลับเอาข้อมูลเดิมมาให้เราแก้ไขแทน เลยอยากให้อาจาร์ลองตรวจสอบดูให้หน่อยครับ
ขอคำแนะนำด้วยครับขอบคุณครับ

procedure TListVnForm.cxButton2Click(Sender: TObject);
begin //บันทึก
    //if ListMyQuery.State in ([dsInsert,dsEdit]) then   // บันทึกและแก้ไข้ข้อมูล
      //MyQueryPersonnelAdd.edit;
      //MyQueryPersonnel.fieldByName('personnel_id').AsInteger;
       ListMyQuery.State in ([dsInsert,dsEdit]);
        ListMyQuery.fieldByName('vn').Text;
      //ListMyQuery.Insert;
      DBEdit1.Text:=formatdatetime('eemmddhhmmss',now);
      ListMyQuery.Post;
    ShowMessage('เพิ่มข้อมูลสำเร็จ');
    Close;
end;



ลองแนบไฟล์ โปรเจคมาวางดีไหมครับ แค่ event click ของ Button มันยังไม่เห็นภาพเท่าไหร่นะครับ

ปล.ผมก็กำลังหัดเขียนอยู่เหมือนกัน
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: ittipol ที่ มกราคม 26, 2012, 15:49:33 PM
ขอคำแนะนำด้วยนะครับ
จะพยายามครับ
ขอบคุณครับ
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: farmonline ที่ มกราคม 27, 2012, 14:02:05 PM
ที่ขึ้นข้อมูลเก่า เพราะคุณผูก Control (TDBEdit, TcxDBDateEdit) ไว้กับ Datasource  (MyDataSource1)
ครับ ลองนำ DBNavigator มาวางแล้ว set datasource เป็น ตัวเดียวกัน ครับ

 แต่ในระยะยาวผมขออนุญาติแนะนำดังนี้ครับ
1. ไม่ควรฝังค่า connection server ไว้ใน project ครับ พวก user password อะไรพวกนี้
2. การ Insert หรือ Add New น่าจะทำด้วยคำสั่ง sql command ไปเลยครับจะยีดหยุ่นกว่าครับ

อย่างไรก็เรียนรู้ร่วมกันครับ
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: ittipol ที่ มกราคม 27, 2012, 14:21:21 PM
ถึง ท่านfarmonline ครับ
ช่วยแนะนำตัวอย่างและโปรแกรมซักอันครับ
ผมจะได้นำมาเป็นตัวอย่างในการใช้งานครับ
ของตัวอย่างด้วยครับ
ขอบคุณอาจารย์ครับ
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: farmonline ที่ มกราคม 27, 2012, 15:07:41 PM
ไฟล์ของท่า ittipol ที่ผมลองนำมาแก้ครับ
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: ittipol ที่ มกราคม 27, 2012, 15:25:14 PM
ขอบคุณมากครับ

ต้องได้ซักวันนะครับ
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: ittipol ที่ มกราคม 27, 2012, 15:31:05 PM
อาจารย์ไม่ผ่านครับ
ติดที่
[DCC Error] VnProject.dpr(7): F1026 File not found: 'cxButtons.dcu'

ต้องแก้ไขยังงัยครับ
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: usa0823 ที่ มกราคม 27, 2012, 15:36:49 PM
ต้องมี component ครับ cxButtons.dcu
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: ittipol ที่ มกราคม 27, 2012, 15:42:28 PM
ครับผม
ขอ component ครับ cxButtons.dcu
ด้วยครับ
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: farmonline ที่ มกราคม 27, 2012, 15:45:25 PM
เปลี่ยนเป็น Button ธรรมดาก็ได้ครับ จริงๆแล้วลบทิ้งก็ได้ครับ ผมวางไว้ว่าจะเขียนคำสั่งแต่ไม่ได้เขียน

หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: ittipol ที่ มกราคม 27, 2012, 15:58:03 PM
ขอตัวอย่างแก้ไขใหม่ได้ไหมครับ
ยังไม่ผ่านเลยครับ
หัวข้อ: Re: Delphi : Number VN
เริ่มหัวข้อโดย: farmonline ที่ มกราคม 27, 2012, 16:11:53 PM
cxbutton เป็น component ที่คุณ ititpol ใช้อยู่แล้วนะครับ