|
|
|
ช่วยเขียน auto run Number ให้หน่อยค่ะ ภาษา C# เขียนมานานละค่ะทำไม่ได้สักที พี่คนไหนใจดีช่วยหน่อยค่ะ !!! |
|
|
|
|
|
|
|
ในกระทู้เก่า ๆ มีอยู่ครับ
|
|
|
|
|
Date :
2013-03-04 20:39:03 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แงๆ มันไม่มีของ c#
|
|
|
|
|
Date :
2013-03-04 22:05:12 |
By :
Amamm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้โปรแกรมแปลงผ่านเว็บก็ได้ครับ ลองค้นหา Convert VB.NET to C#
|
|
|
|
|
Date :
2013-03-05 06:01:01 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เลิกเขียน auto number แบบนี้เถอะ
|
|
|
|
|
Date :
2013-03-05 07:55:04 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"เมื่อไหร่จะเลิกเขียน auto number แบบ +1 ซะที"
หรือ "เลิกเขียน auto number แบบนี้เถอะ"
ก็ของข้าพเจ้าเองแหละ เห็นคนเขียนแบบนี้แล้วมันหงุดหงิด
ไม่เข้าใจว่าจำเป็นขนาดไหนที่ต้องรู้รหัสก่อนจะคีย์ข้อมูล ซึ่งรหัสพวกนี้มันสำคัญนะ
เพราะมันคือ primary key ถ้าเกิดการซ้ำกันก็เละเลยข้อมูล ถ้ากำหนด field นี้เป็น pk มัน error เลยนะ insert ไม่ลง
แต่ถ้าไม่ได้กำหนดเป็ย pk ไว้อีกก็รับรองว่าข้อมูลเป็นขยะแน่นอน
เขียนพวก web app หรือพวก client server มี user ใช้งานพร้อมๆ กัน
ต่างคนดึง last id ตัวเดียวกันไปใช้ ต่างคนต่าง +1 แค่นี้ข้อมูลก็เละเทะแล้ว
จะเปิด order หรืออะไรให้คีย์ให้สร็จไปเลย พอกด submit ค่อยใช้ db มัน generrate id เอง
ซึ่งง่ายกว่าเยอะก็ไม่ทำกัน ง่ายๆ ก็ใช้ running number ไปเลย หรือจะให้รันเป็นรหัสมีอักษรกับตัวเลข
คำสั่ง sql เฉยๆ ก็ทำได้ วิธี +1 เหมือนเด็กเขียนโปรแกรมเล่น ดูไม่เป็นมืออาชีพทำเลิกใช้เถอะ
|
|
|
|
|
Date :
2013-03-05 10:17:26 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าเป็นไปได้ รบกวน สอน มือ ใหม่ด้วยครับ ขอความรู้ด้วยคน สอนเอาบุญ หน่อย ครับ ผมอยากพัฒนาครับ
สาเหตุที่ ผมใช้ (auto number แบบ +1) เพราะ ที่มาหาลัยสอนมาแบบ นี้ ผมจะไปหาข้อมูลเพิ่ม ในหนังสือที่ซื้อมา ก็ สอน (auto number แบบ +1) พี่แนะนำต่อด้วยครับ ผมอยากได้เก็บความรู้ที่พี่จะมอบให้อย่างดี เพื่อนำไป พัฒนาการเขียนโปรแกรมต่อไปครับ
|
ประวัติการแก้ไข 2013-03-05 12:16:34
|
|
|
|
Date :
2013-03-05 12:15:38 |
By :
kyokohoho |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พี่ๆ ที่แนะให้เลิกเขียนautorun ช่วยสอน ทำโค้ดแบบที่พี่ว่าให้หน่อยค่ะ หนูทำไม่เป็น ?
|
|
|
|
|
Date :
2013-03-05 12:38:47 |
By :
Amamm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ
กระทู้ที่ 6
สว่างกระจ่างแจ้งครับ เห็นภาพเลย
ของผมที่ใช้ + 1 เพราะกาลครั้งหนึ่งนานมาแล้วลูกค้าร้องขอมาให้สามารถกำหนดฟอร์แมทได้
แล้วก็มีตัวเลขแบบรันนิ่งตามมา เช่น RO-yyyyMM-xxxx อาจจะหมายถึง ใบสั่งซื้อของปีอะไร เดือนอะไร
ใบที่เท่าไหร่ ก็เลยคิดว่าอย่างไรก็ต้องสร้างตารางมาเก็บฟอร์แมทที่ลูกค้าสร้าง ก็เลยออกแบบให้เป็น +1
โดยเก็บหมายเลขสุดท้ายที่รันไว้ด้วย เวลาลูกค้าจะกรอกข้อมูล ระบบจะไปเรียกเอาค่ามา
แล้วก็เขียนค่าใหม่ลงไปเก็บทำให้มันไม่ซ้ำ ด้วยเหตุนี้เลยไม่เจอปัญหา
แต่จริงๆถ้าจะเอาให้ง่าย ก็ตั้งรันนิ่งนัมเบอร์ไปเลยอย่างพี่ว่านั่นหละจริงสุด
|
|
|
|
|
Date :
2013-03-05 13:22:47 |
By :
คนงานตัดอ้อย |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เหมือนจะมีคนสนใจเยอะ จะอธิบายให้
1. แบบง่ายสุดๆ ใช้ running number เลย คือเป็นตัวเลข รันไปเรื่อยๆ
โดยตัวเลขนี้เราจะกำหนดเป็น auto increment
Code (SQL)
CREATE TABLE [MyTable](
[ID] [int] IDENTITY(1,1) Primary Key Clustered,
[Name] [nvarchar](50) NULL
)
เวลา insert ก็แค่ป้อน Name อย่างเดียว โดยในส่วนของ id เราจะไม่ต้องไปยุ่งกับมัน
Code (SQL)
INSERT INTO [MyTable] ([Name]) VALUES ('Thaicreate')
ด้วยวิธีนี้ field id จะรันเพิ่มไปที่ละ 1 เรื่อยๆ ด้วยความสามารถของตัว sql เอง
แม้ว่าจะสั่งลบ record ล่าสุดไป ถ้าเรา insert ข้อมูลลงไปใหม่มันก็จะรันข้าม id นั้นไป
โดยไม่มีการใช้ id ซ้ำกัน และจะไม่มีวันที่จะมี id ซ้ำกันเกิดขึ้นแน่นอน
|
|
|
|
|
Date :
2013-03-05 14:45:58 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. ใช้ function IDENT_CURRENT ใช้เรียกค่า identity ล่าสุดมาแสดง
เราลองเปรียบเทียบการทำงานระหว่าง IDENT_CURRENT กับ MAX ว่าต่างกันอย่างไร
โดยเราจะ insert ข้อมูลเข้า MyTable 7 ครั้ง
Code (SQL)
INSERT INTO [MyTable] ([Name]) VALUES ('Thaicreate1')
INSERT INTO [MyTable] ([Name]) VALUES ('Thaicreate2')
INSERT INTO [MyTable] ([Name]) VALUES ('Thaicreate3')
INSERT INTO [MyTable] ([Name]) VALUES ('Thaicreate4')
INSERT INTO [MyTable] ([Name]) VALUES ('Thaicreate5')
INSERT INTO [MyTable] ([Name]) VALUES ('Thaicreate6')
INSERT INTO [MyTable] ([Name]) VALUES ('Thaicreate7')
แล้วเราก็ลองใช้คำสั่ง IDENT_CURRENT กับ MAX เพื่อ query ค่า id มาดู
Code (SQL)
select MAX(ID) as MaxID from MyTable
select IDENT_CURRENT( 'MyTable' ) as Ident
ผลที่ได้ คือ
max = 7
ident = 7
เท่ากัน
งั้นเราลองลบ record ที่ 7 ทิ้ง
Code (SQL)
delete from MyTable ID = 7
จากนั้นก็ query ใหม่อีกที
Code (SQL)
select MAX(ID) as MaxID from MyTable
select IDENT_CURRENT( 'MyTable' ) as Ident
ผลที่ได้ คือ
max = 6
ident = 7
ที่เป็นแบบนี้ก็เพราะ max จะ return ค่า id สูงสุดมาให้ ซึ่งต่างจาก
ident_current ที่จะได้ค่า identity ที่ insert เข้าไป
|
|
|
|
|
Date :
2013-03-05 14:57:04 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ที่นี่พอจะเข้าใจการทำงานของ IDENT_CURRENT แล้ว
เราก็นำมาประยุกต์กับการ insert
โดยการจะสร้าง table ใหม่อีกอัน
Code (SQL)
CREATE TABLE [MyTable](
[ID] [int] IDENTITY(1,1) Primary Key Clustered,
[Code] [nvarchar](50) NULL,
[Name] [nvarchar](50) NULL
)
โดย ID เราให้เป็น pk และกำหนดเป็น auto increment
Code เป็นรหัสที่เราจะใช้กำหนด format เป็น 'CODE00000000' <--- padding zero 8 หลักเลย
Name คือ รายละเอียด
เราจะ insert คำว่า thaicreate แล้วให้มัน generate รหัสเป็น CODE00000001
เราก็ใช้คำสั่ง
Code (SQL)
INSERT INTO MyTable
(Code, Name)
VALUES ('CODE' + REPLICATE('0', 8 - LEN(IDENT_CURRENT('MyTable'))) + CONVERT(nvarchar(50), IDENT_CURRENT('MyTable')), 'Thaicreate')
อธิบายคำสั่ง
- 'CODE' <-- string ธรรมดา
- REPLICATE('0', 8 - LEN(IDENT_CURRENT('MyTable'))) <-- เติม 0 ให้ครบ 8 หลัก ก็คือเอา 8 ไปลบกับความยาวของ identity
- CONVERT(nvarchar(50), IDENT_CURRENT('MyTable')) <-- เรียก identity ล่าสุดมาใช้ (เราจะได้ตัวเลขเดียวกับ ID) ทำงาน convert เป็น nvarchar ด้วยเดี๋ยวต่อ string ไม่ได้
|
|
|
|
|
Date :
2013-03-05 15:10:33 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ๋อๆเข้าใจละค่ะ ขอบคุณพี่ๆที่น่ารักทุกคนช่วยได้เยอะเลยค่ะ !!
|
|
|
|
|
Date :
2013-03-05 15:16:28 |
By :
AmAmm |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ดังนั้นเลิกเอา max id มา +1 เถอะ
|
|
|
|
|
Date :
2013-03-05 15:16:29 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สุดยอดเลยคับ เด๋วลองใช้ดูบ้าง ^^
|
|
|
|
|
Date :
2014-09-23 21:50:37 |
By :
esthook |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ประยุกใช้กับ Visual Studio C# ยังไงครับ
|
|
|
|
|
Date :
2014-12-08 11:49:57 |
By :
มือใหม่ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|