Агуулгын хүснэгт:

EAL-Industri4.0-RFID Dataopsamling Til мэдээллийн сан: 10 алхам (зурагтай)
EAL-Industri4.0-RFID Dataopsamling Til мэдээллийн сан: 10 алхам (зурагтай)

Видео: EAL-Industri4.0-RFID Dataopsamling Til мэдээллийн сан: 10 алхам (зурагтай)

Видео: EAL-Industri4.0-RFID Dataopsamling Til мэдээллийн сан: 10 алхам (зурагтай)
Видео: IoT & IR 4.0 - Disruptive Era 2024, Арваннэгдүгээр
Anonim
EAL-Industri4.0-RFID Dataopsamling Til мэдээллийн сан
EAL-Industri4.0-RFID Dataopsamling Til мэдээллийн сан

Төсөлд хамрагдсан хүмүүс бүртгүүлж, бүртгэлээ бүртгүүлж байна. Өгөгдөл, MySQL мэдээллийн сангаас хоцрогдсон RFID. зангилаа-УЛААН, samt fremvisning OG behandling Аф де opsamlede өгөгдөл би et C# програм, би ма хэлбэр EN Windows Form Application. Ой модны аж ахуй эрхлэгч:

Vi har EN produktionslinje som үйлдвэрлэгч leverpostej би 200g foliebakker. Мэдээлэл, RFID хаягийг өөрчилж болно. Да færdigvægten af hver enkelt bakke leverpostej kan svinge (afhængig af råvarer, fordampning i ovn mm), og da kunderne hver har et specifikt krav færdigvægten, bruges UID tagget til at knytte hver enkelt envert lagerposte leverpostejer til тодорхой ойлголт өгөх болно. Өдөр тутмын супермаркетууд:

1. Ирма. Тайлбарыг буцааж англи (Америкийн Нэгдсэн Улс) руу орчуулах Орчуулах +/- 5%, хамгийн багадаа 190 гр, хамгийн ихдээ 210 гр.

2. Брюгсен. Brugsens leverpostej skal holde sig inden to +/- 10%, хамгийн багадаа 180 гр, хамгийн ихдээ 220 гр.

3. Алди. Aldis хямдралтай үнээр +/- 15%, хамгийн багадаа 170 гр, хамгийн ихдээ 230 гр үнээр худалдаж аваарай.

Хичээлийн дараалал:

Range0: хүрээнээс гадуур

1 -р хүрээ: хамгийн багадаа 190г/хамгийн ихдээ 210 гр

Хэмжээ2: хамгийн багадаа 180г/хамгийн ихдээ 220г

3 -р хүрээ: хамгийн багадаа 170 гр/хамгийн ихдээ 230 гр

Алхам 1: VUgt Samt бүртгүүлэх Af UID -д зориулсан Аф өгөгдлийг хамруулах

VUgt Samt бүртгүүлэх Af UID -д зориулсан Opsamling Af өгөгдөл
VUgt Samt бүртгүүлэх Af UID -д зориулсан Opsamling Af өгөгдөл

RFID хаягийг бүртгэх, RFID хаягийг бүртгэх, RFID-RC522 уншигч/зохиолч. Энд ямар ч асуудал байхгүй, жишээ нь, Arduinoen -ийн аналог болон өгөгдлийн симуляторын өгөгдөл.

Дахин тодруулж хэлэхэд:

1 ширхэг потметр 25к шугамтай. Yder-benene er tilsluttet hhv. GND OG +5V, midterbenet Эр tilsluttet AN0

RFID-RC522 нь Arduino самбарыг SPI порт дээр байрлуулсан болно:

SDA -> зүү 53

SCK -> pin52

MOSI -> pin51

MISO-> pin50

IRQ -> NC

GND -> GND

RST -> pin5

3.3V -> 3.3V

Hhv -ийн хувьд өгөгдөл дамжуулагдсан болно. UID OG vгgten, sendes på den serielle port som en komma-separeret tekststreng videre til node-Red som står for den efterfølgende pråsentation på et dashboard og lagring i en database.

Алхам 2: Arduino програм

Би Arduino programmet inkluderes de to biblioteker SPI.h OG MFRC522.h for at at kundne bruge RFID læseren. Би хувьсагчийг эхлүүлэх програмыг эхлүүлсэн. Der laves en instans af MFRC522. Би Setup blokken initialiseres den serielle forbindelse, SPI porten OG MFRC522. Derefter нь RFID хаягийг сканнердах болно. Учир нь ikke үед sende DET samme UID afsted flere gange efter hinanden, Эр дер lavet EN хожуул kode SOM tjekker нь dette. Сканнер болон UID хаягийг өөрчилж, UID -ийг ачаалах болно. Нэвтрүүлгийн массив нь хуучин UID -ийг хайж олоход чухал үүрэг гүйцэтгэдэг. Hvis nyUID og oldUID er ens, er der tale om samme UID tag og UID'et skal knowes. Энэ нь UID -ийг ашиглахаас өөр аргагүй юм. Тэмдэглэл нь 150-250 хүртэл байдаг. Өгөгдөл SOM EN komma-separeret tekststreng. OldUID = nyUID -ийн үндсэн кодууд, RFID шошго, кодын жагсаалтууд дээр суурилсан.. 2 програмын функц, програм хангамжийн функцууд байдаг. Funktionen returnerer үнэн hvis array'e er ens, og хуурамч hvis array'e er forskellige.

#оруулах

#include // Энэ програм нь RDIF-RC522 уншигч/зохиолчийн самбар ашиглан RFID картуудыг шалгадаг. // UID уншдаг, аналог зүү уншдаг. Аналог утга 0-1023 нь 150-250 хүртэл масштабтай байна. // UID ба аналог утгыг цуваа порт дээр таслалаар тусгаарласан текст хэлбэрээр 9600, N, 8, 1 ашиглан илгээдэг. ижил UID -ийг дахин илгээхээс өмнө байгаа. // Энэ функцийг array_cmp (oldUID , nyUID ) функц дахь oldUID nyUID -ийг харьцуулж кодонд хэрэгжүүлдэг.

constexpr uint8_t RST_PIN = 5;

constexpr uint8_t SS_PIN = 53; int sensorPin = A0; int Утга = 0; String StringValue = "0000"; байт хуучинUID [4] = {}; байт nyUID [4] = {};

MFRC522 mfrc522 (SS_PIN, RST_PIN); // MFRC522 жишээ үүсгэх.

хүчингүй тохиргоо ()

{Serial.begin (9600); // Цуваа холболтыг эхлүүлэх SPI.begin (); // SPI автобусыг эхлүүлэх mfrc522. PCD_Init (); // MFRC522 эхлүүлэх}

хоосон давталт ()

{// (! Mfrc522. PICC_IsNewCardPresent ()) {return бол шинэ карт хайх; } // Хэрэв (! Mfrc522. PICC_ReadCardSerial ()) {return; } // nyUID -ийг UID хаягаар ачаална уу (byte i = 0; i <mfrc522.uid.size; i ++) {nyUID = mfrc522.uid.uidByte ; } // if oldUID nyUID if (! array_cmp (oldUID, nyUID)) {// UID хаягийг цуваа порт дээр илгээх (byte i = 0; i 1000) {Value = 1000; } Утга = (Утга / 10) + 150; // масштабтай аналог утгыг илгээх Serial.print (Утга); // newline Serial.println () илгээх; // тохируулах oldUID = nyUID (байт z = 0; z <4; z ++) oldUID [z] = nyUID [z]; } // 1 сек хүлээх (1000); }

// 2 массивыг харьцуулах …

boolean array_cmp (байт a , байт b ) {bool тест = үнэн; // элемент бүрийг ижил эсэхийг шалгаарай. хэрэв зөвхөн нэг нь байхгүй бол false (= byte n = 0; n <4; n ++) {if (a [n]! = b [n]) test = false; // хэрэв байт тэнцүү биш бол test = false} if (test == true) true буцаана; өөрөөр худлаа буцаах; }

Алхам 3: Node-RED, Lagring Af Data I мэдээллийн сан

Node-RED, Lagring Af Data I мэдээллийн сан
Node-RED, Lagring Af Data I мэдээллийн сан
Node-RED, Lagring Af Data I мэдээллийн сан
Node-RED, Lagring Af Data I мэдээллийн сан

Følgende flow er lavet i node-RED:

COM4 эх сурвалж нь Arduino самбар дээр өгөгдлийн горимыг тохируулах боломжийг олгодог. Funktionerne "Хуваах ба үнэ цэнийг олж авах" OG "Split and Get UID" задлагчийг текстээр нь буцааж өгөх, HHV vægten OG UID. Хяналтын самбар дээр би график графикийг хэмжиж үзэх боломжтой. UID fremvises болон текст текст. Funktionen test_sound advarer verbalt med sætningen "Хүрээнээс гадуур", 170г -ээс доош 230 гр -аас дээш хэмжээтэй, dvs i хүрээ 0.

Хуваах ба үнэ цэнийг авах:

var output = msg.payload.split (',');

temp = {ачаалал: (гаралт [1])}; буцах температур;

Хуваах ба UID авах:

var output = msg.payload.split (",");

temp = {ачаалал: гаралт [0]}; буцах температур;

туршилтын дуу:

var number = parseInt (msg.payload);

if (тоо> 230 || дугаар <170) {newMsg = {ачааллын ачаалал: "Хүрээнээс гадуур"}; newMsg буцаах; } өөр {newMsg = {ачаалал: ""}; newMsg буцаах; }

Funktionen Split string "," indsætter et timestamp, UID болон бусад мэдээллийн сан patedb.patelog.

var output = msg.payload.split (","); // msg.payload -ийг таслалаар массив болгон хуваах

UIDTag = гаралт [0]; // эхний хэсгийг эхний байрлалд оруулах [0] ValueTag = гаралт [1]; // хоёр дахь хэсгийг хоёр дахь байрлалд оруулах [1]

var m = {

сэдэв: "INSERT INTO patedb.patelog (timestamp, UID, weight) VALUES ('"+new Date (). toISOString ()+"', '"+UIDTag+"', '"+ValueTag+"');" }; буцах м;

patelog er en MySQL мэдээллийн сан нь дараах параметрүүдийг ашиглах боломжтой болно:

Хөтлөгч: localhost

Боомт: 3306

Хэрэглэгч: root

Мэдээллийн сан: patedb

Алхам 4: Өгөгдлийн сангийн дизайн

Өгөгдлийн сангийн дизайн
Өгөгдлийн сангийн дизайн

Өгөгдлийн сан patedb indeholder 4 таблер

patelog er dataopsamlingstabellen, tilskrives өгөгдлийн зангилаа-RED og C# programmet

ordertable er en tabel som indeholder data om de genemførte ordrer, tilskrives data af C# programmet

customertable er et kunderegister

rangetable er en tabel som indeholder grænseværdierne for de i C# programmet benyttede range.

Алхам 5: Пателог

Пателог
Пателог

Таблетын жагсаалт 6 -р хэсэгт багтсан болно:

pateID (int) Эр үндсэн түлхүүр OG inkrementeres automatisk.

Цагийн тэмдэг, UID & файлыг бичих (med forskellig max længde)

хүрээNr er typen tinyint (C# программын хувьд)

orderID эх бичвэр int (захиалгын ID C# программын хувьд)

Зангилаа-RED tilføjer ikke værdier til kolonnerne rangeNr OG orderID. rangeNr og orderID хөрвүүлэгч NULL тохиргоог хийх, би C# програмыг ашиглах боломжтой

Алхам 6: Захиалах боломжтой

Оруулах боломжтой
Оруулах боломжтой

ordertable indeholder 5 колоннер:

orderID (int) er det aktuelle ordrenummer

orderQuant (mediumint) эр ordens pålydende antal

quantProduced (mediumint) компани нь түрээслэх боломжтой. (C# програмтай холбоотой асуудлууд)

сэтгэгдэл (жижиг текст) er en eventuel kommentar til ordren.

customerID (int) захиалга өгөх болно.

Алхам 7: Тохиромжтой

Тохиромжтой
Тохиромжтой

customertable indeholder 6 колоннер:

customerID (int) er үндсэн түлхүүр og auto inc.

нэр, хаяг, утас, имэйл (varchar) med forskellig max længde

хүрээNr (int)

Алхам 8: Өөрчлөх боломжтой

Рангет болох боломжтой
Рангет болох боломжтой

rangetable indeholder 3 колоннер:

rangeNr (int) er key key og auto inc.

rangeMin (int)

rangeMax (int)

Алхам 9: C# програм

C# програм
C# програм

Үйлдвэрлэгчид дараах журмыг хэрэгжүүлж байна:

Хичээл, захиалга, зохион байгуулалт нь C# программын онцлог шинж чанарууд юм. pd et transportbånd) UHD-ээс бусад цэгүүд-RED, мэдээллийн самбар дээрх мэдээллийн самбарын мэдээллийн самбарын хяналтын самбар болон бусад хэсэгт UID-ийн цагийн хуваарь, UID-ийн өгөгдлийг хадгалдаг. tidspunkt ikke tilskrives værdier til rangeNr og orderID vil de have værdien NULL.

Мэдээлэл, цаг хугацааны интервал доорх C# програмыг боловсруулсан болно. NEr der er detekteret en række med NULL værdi, beregnes rangeNr og det tilføjes sammen med det aktuelle orderID. Үйлдвэрлэгч, үйлдвэрлэгч, захиалагч нар "зогсох" товчийг дарна уу. Төлбөр тооцоо хийх шаардлагагүй болно. Мэдээлэл, өгөгдөл, өгөгдлийн жагсаалт нь өгөгдөл, өгөгдөл дамжуулах товчлуур, өгөгдлийг шинэчлэх боломжийг олгодог. захиалга өгөх боломжтой, хувь хүний захиалга өгөх боломжтой.

System. Collections. Generic ашиглан; System. ComponentModel ашиглах; System. Data ашиглах; System. Drawing ашиглах; System. Linq ашиглах; System. Text ашиглах; System. Threading. Tasks ашиглах; System. Windows. Forms ашиглах; MySql. Data. MySqlClient ашиглах;

нэрийн орон зайг харуулах_ өгөгдлийн сангаас

{public partial class Form1: Form {MySqlConnection connection = new MySqlConnection ("data source = localhost; username = root; password = ''"); int RowNumber = 0; // pateID утгыг хадгалах хувьсагч int RangeNumber = 0; // Rangeenberber int weight = 0 хадгалах хувьсагч. // int OrderNr = 0 жинг хадгалах хувьсагч. // OrderNR int QuantProduced хадгалах хувьсагч = 0; // Үйлдвэрлэсэн тоо хэмжээг хадгалах хувьсагч int NumberOfRows = 0; // хоосон мөрийн тоо.. bool ProdRunning = false; // Эхлэх ба зогсоох товчлуурууд идэвхжсэн эсэхийг заагч хувьсагч int limit = new int [6]; // int CustomerID массивыг эхлүүлэх; // customerID нийтийн Form1 () {InitializeComponent () -ийг хадгалах хувьсагч; load_table (); // дуудлага load_table}

хүчингүй load_table ()

{MySqlCommand тушаал = шинэ MySqlCommand ("SELECT * FROM patedb.patelog ORDER BY by timestamp DESC;", холболт); {MySqlDataAdapter адаптер = шинэ MySqlDataAdapter () -ийг туршиж үзээрэй; адаптер. SelectCommand = тушаал; DataTable dbdataset = шинэ DataTable (); адаптер Дүүргэх (dbdataset); BindingSource bsource = шинэ BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); адаптер Шинэчлэх (dbdataset); } барих (Exception ex) {MessageBox. Show (ex. Message); }}

хувийн хоосон SetRowOrder ()

{dataGridView1. Columns ["pateID"]. DisplayIndex = 0; // Түүний мэдээлэл өгөгдөлGridView1. Columns ["timestamp"]. DisplayIndex = 1; // Түүний мэдээлэл өгөгдөлGridView1. Columns ["UID"]. DisplayIndex = 2; // Түүний мэдээлэл өгөгдөлGridView1. Columns ["weight"]. DisplayIndex = 3; // Түүний мэдээлэл өгөгдөлGridView1. Columns ["rangeNr"]. DisplayIndex = 4; // Түүний мэдээлэл өгөгдөлGridView1. Columns ["orderID"]. DisplayIndex = 5; // Түүний кан колоннер Андрес}

private void GetData_Click (объект илгээгч, EventArgs e) // Өгөгдлийн сангийн хүснэгт, захиалгыг Timestamp -аар уншдаг

{load_table (); }

private void btnRefreshUID_Click (объект илгээгч, EventArgs e) //

{string timeStr = "SELECT * FROM patedb.patelog ORDER BY UID;"; MySqlCommand тушаал = шинэ MySqlCommand (timeStr, холболт); {MySqlDataAdapter адаптер = шинэ MySqlDataAdapter () -ийг туршиж үзээрэй; адаптер. SelectCommand = тушаал; DataTable dbdataset = шинэ DataTable (); адаптер Дүүргэх (dbdataset); BindingSource bsource = шинэ BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); адаптер Шинэчлэх (dbdataset); } catch (Exception ex) {MessageBox. Show (ex. Message); }}

private void btnRefreshValue_Click (объект илгээгч, EventArgs e)

{string weightSort = "SELECT * FROM patedb.patelog ORSTER BY CAST (жин бүхэл бүтэн гарын үсэг зурсан);"; MySqlCommand тушаал = шинэ MySqlCommand (weightSort, холболт); {MySqlDataAdapter адаптер = шинэ MySqlDataAdapter () -ийг туршиж үзээрэй; адаптер. SelectCommand = тушаал; DataTable dbdataset = шинэ DataTable (); адаптер Дүүргэх (dbdataset); BindingSource bsource = шинэ BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); адаптер Шинэчлэх (dbdataset); } catch (Exception ex) {MessageBox. Show (ex. Message); }}

хувийн void ChkNullBtn_Click (объект илгээгч, EventArgs e)

{if (ProdRunning) {CheckTableForNull (); load_table (); }}

хувийн хоосон CheckTableForNull ()

{// Таймер хоорондын интервалыг хамгийн багадаа 100 мс int i шалгах/тохируулах; int. TryParse (textTimer1. Text, гарч ирсэн i); if (i <100) {timer1. Stop (); би = 100; таймер 1. Интервал = i; MessageBox. Show ("Хамгийн бага утга i 100mS"); таймер 1. Эхлэх (); } өөр {timer1. Interval = i; } textTimer1. Text = timer1. Interval. ToString (); // Хүснэгтэнд null байгаа мөр байгаа эсэхийг шалгаарай, хувьсагч дахь мөрийн тоог буцаана: NumberOfRows string weightStr = ""; string chkNull = "СОНГОХ САНАА (*) FROM patedb.patelog WHERE rangeNR нь NULL ORDER BY pateID LIMIT 1;"; MySqlCommand тушаал = шинэ MySqlCommand (chkNull, холболт); {connection. Open () -ийг туршиж үзээрэй; NumberOfRows = Convert. ToInt32 (command. ExecuteScalar ()); холбох. Close (); } барих (Exception ex) {MessageBox. Show (ex. Message); } эцэст нь {if (NumberOfRows! = 0) {try {// rangeNr нь NULL string readID = "pateID FROM patedb.patelog WHERE rangeNR IS NULL ORDER BY pateID ASC LIMIT 1; MySqlCommand cmdID = шинэ MySqlCommand (readID, холболт); {холболт. Open (); RowNumber = (int) cmdID. ExecuteScalar (); // бүхэл тоо !! холбох. Close (); } listPateID. Text = RowNumber. ToString (); // сонгосон PateID дугаарыг унших // Сонгосон дугаарын мөрийн жинг сонгоно = RowNumber. ToString (); string readweight = "SELECT weight FROM patedb.patelog WHERE pateID =" + мөр; MySqlCommand cmdweight = шинэ MySqlCommand (унших жин, холболт); {холболт. Open (); weightStr = (мөр) cmdweight. ExecuteScalar (); // мөр !! холбох. Close (); } жин = int. Parse (weightStr); // int txtWeight. Text = weight. ToString () руу хөрвүүлэх; // хэвлэх int RangeNumber = 0; if (жин> = хязгаар [0] && жин = хязгаар [2] && жин = хязгаар [4] && жин <= хязгаар [5]) {RangeNumber = 3; }} txtRange. Text = RangeNumber. ToString (); UpdateLog (); } барих (Exception ex) {MessageBox. Show (ex. Message); } QuantProduced = QuantProduced + 1; }}} хувийн void btnStart_Click (объект илгээгч, EventArgs e) {if (ProdRunning == false) {int valtest; {CustomerID = int. Parse (txtCustomerNr. Text) оролдоно уу; // read customerID} catch {MessageBox. Show ("Үйлдвэрлэлийн өгөгдлийг оруулаад 'эхлэх' товчийг дарна уу."); }

string test = "SELECT COUNT (*) FROM patedb.customertable WHERE customerID ="+CustomerID;

MySqlCommand cmdtestcustomer = шинэ MySqlCommand (тест, холболт); {холболт. Open (); valtest = Convert. ToInt32 (cmdtestcustomer. ExecuteScalar ()); // харилцагч холболт байхгүй бол 0 буцаана. Close (); } if (valtest == 1) // хэрэв үйлчлүүлэгч мэдээллийн санд байгаа бол - үйлдвэрлэлээ эхлүүлэх {оролдох {OrderNr = int. Parse (txtOrderNumber. Text); ProdRunning = үнэн; таймер 1. Эхлэх (); textTimer1. Text = timer1. Interval. ToString (); ReadLimits (); } catch (Exception ex) {MessageBox. Show ("Үйлдвэрлэлийн өгөгдлийг оруулаад 'эхлэх' товчийг дарна уу."); }} else MessageBox. Show ("Хэрэглэгч мэдээллийн санд байхгүй байна, дахин оролдоно уу"); } // ReadLimits (); }

хувийн хоосон ReadLimits ()

{// Хязгаарыг унших боломжтой, 1 -ээс 3 хүртэлх int counter = 0; for (int rangeNr = 1; rangeNr <4; rangeNr ++) {string readmin = "SELECT rangeMin FROM patedb.rangetable WHERE rangeNr ="+rangeNr; MySqlCommand cmdmin = шинэ MySqlCommand (readmin, холболт); {холболт. Open (); хязгаар [тоолуур] = (int) cmdmin. ExecuteScalar (); тоолуур = тоолуур + 1; холбох. Close (); } // MessageBox. Show (counter. ToString ()); string readmax = "SELECT rangeMax FROM patedb.rangetable WHERE rangeNr =" + rangeNr; MySqlCommand cmdmax = шинэ MySqlCommand (readmax, холболт); {холболт. Open (); хязгаар [тоолуур] = (int) cmdmax. ExecuteScalar (); тоолуур = тоолуур + 1; холбох. Close (); }} // давталтын төгсгөл}

хувийн хоосон UpdateLog ()

{// UPDATE rangeNR & orderID мөр Range = RangeNumber. ToString (); string Order = OrderNr. ToString (); string update = "UPDATE patedb.patelog SET rangeNr ="+Range+','+"orderID ="+OrderNr+"WHERE pateID ="+RowNumber; MySqlCommand updatecmd = шинэ MySqlCommand (шинэчлэлт, холболт); {connection. Open () -ийг туршиж үзээрэй; updatecmd. ExecuteNonQuery (); холбох. Close (); } барих (Exception ex) {MessageBox. Show (ex. Message); }}

private void btnStop_Click (объект илгээгч, EventArgs e)

{if (ProdRunning == true) {timer1. Stop (); ProdRunning = худал; UpdateOrderTable (); } else {MessageBox. Show ("Үйлдвэрлэл хараахан эхлээгүй байна. Өгөгдлийг оруулаад" эхлүүлэх "товчийг дарна уу)); }}

хувийн хоосон UpdateOrderTable ()

{string insert = "INSERT INTO patedb.ordertable (orderID, orderQuant, quantProduced, comment, customerID) VALUES ('" + this.txtOrderNumber. Text + "', '" + this.txtOrderQuant. Text + "', '" + QuantProduced. ToString ()+"','"+this.txtComment. Text+"','"+this.txtCustomerNr. Text+"');"; MySqlCommand insertcmd = шинэ MySqlCommand (оруулах, холболт); {connection. Open () -ийг туршиж үзээрэй; insertcmd. ExecuteNonQuery (); холбох. Close (); QuantProduced = 0; } барих (Exception ex) {MessageBox. Show (ex. Message); }}

private void timer1_Tick (объект илгээгч, EventArgs e)

{CheckTableForNull (); load_table (); }

private void btnShowOrderTable_Click (объект илгээгч, EventArgs e)

{if (ProdRunning == false) {MySqlCommand command = new MySqlCommand ("SELECT * FROM patedb.ordertable ORDER BY orderID DESC;", холболт); {MySqlDataAdapter адаптер = шинэ MySqlDataAdapter () -ийг туршиж үзээрэй; адаптер. SelectCommand = тушаал; DataTable dbdataset = шинэ DataTable (); адаптер Дүүргэх (dbdataset); BindingSource bsource = шинэ BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; адаптер Шинэчлэх (dbdataset); } барих (Exception ex) {MessageBox. Show (ex. Message); }} өөр {MessageBox. Show ("Stop to wiev orderTable" дээр дарна уу)); }}

private void btnShowOrderDetails_Click (объект илгээгч, EventArgs e)

{if (ProdRunning == false) {string test = ("SELECT patedb.ordertable.orderID, orderQuant, quantProduced, comment, customerID FROM patedb.ordertable INNER JOIN patedb.patelog ON patedb.patelog.orderID = patedb.ordertable.orderID WHERE patedb.patelog. UID = '" + txtShowOrderDetails. Text +"' "); MySqlCommand тушаал = шинэ MySqlCommand (тест, холболт); {connection. Open () -ийг туршиж үзээрэй; MySqlDataAdapter адаптер = шинэ MySqlDataAdapter (); адаптер. SelectCommand = тушаал; DataTable dbdataset = шинэ DataTable (); адаптер Дүүргэх (dbdataset); BindingSource bsource = шинэ BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; адаптер Шинэчлэх (dbdataset); } барих (Exception ex) {MessageBox. Show (ex. Message); } холболт. Close (); } else {MessageBox. Show ("Захиалгын дэлгэрэнгүйг харахын тулд зогсоох дээр дарна уу"); }}

private void btnShowCustomerDetails_Click (объект илгээгч, EventArgs e)

{if (ProdRunning == false) {string test = ("SELECT patedb.customertable.customerID, name, address, phone, email, rangeNr FROM patedb.customertable INNER JOIN patedb.ordertable ON patedb.ordertable.customerID = patedb.customertable. customerID WHERE patedb.ordertable.orderID = '" + txtShowCustomerDetails. Text +"' "); MySqlCommand тушаал = шинэ MySqlCommand (тест, холболт); {MySqlDataAdapter адаптер = шинэ MySqlDataAdapter () -ийг туршиж үзээрэй; адаптер. SelectCommand = тушаал; DataTable dbdataset = шинэ DataTable (); адаптер Дүүргэх (dbdataset); BindingSource bsource = шинэ BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; адаптер Шинэчлэх (dbdataset); } барих (Exception ex) {MessageBox. Show (ex. Message); }} өөр {MessageBox. Show ("Хэрэглэгчийн дэлгэрэнгүй мэдээллийг харахын тулд зогсоох дээр дарна уу"); }}}

}

Зөвлөмж болгож буй: