Talaan ng mga Nilalaman:

EAL-Industri4.0-RFID Dataopsamling Til Database: 10 Hakbang (na may Mga Larawan)
EAL-Industri4.0-RFID Dataopsamling Til Database: 10 Hakbang (na may Mga Larawan)

Video: EAL-Industri4.0-RFID Dataopsamling Til Database: 10 Hakbang (na may Mga Larawan)

Video: EAL-Industri4.0-RFID Dataopsamling Til Database: 10 Hakbang (na may Mga Larawan)
Video: Technology Stacks - Computer Science for Business Leaders 2016 2024, Nobyembre
Anonim
EAL-Industri4.0-RFID Dataopsamling Til Database
EAL-Industri4.0-RFID Dataopsamling Til Database

Dette projekt omhandler opsamling af vægtdata, pagrerehistro sa identiteter vha. Ang RFID, naglalagay ng data sa aking database ng MySQL. node-RED, samahan ang pagsasaayos at pag-uugali ng data mula sa opsamlede na data at C # na programa na nabubuo ko sa Windows Form Application. Vi forestiller os følgende:

Sa pamamagitan ng isang tagagawa prodyuser leverpostej i 200g foliebakker. Maaari kang magdagdag ng isang link sa pamamagitan ng RFID tag sa plasticlåget / labelen, isang taga-empleyo at unikt ID (UID = Natatanging Tagakilala, para sa 32 mga bit code, 8 hexadecimale karakterer) para sa pagkakakilanlan ng ilan sa mga ito. Da 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 leverpostet lagre leverpostejer til én specifik kunde. Kunderne er supermarkedskæder:

1. Irma. Mag-click sa iyo upang masulat ang impormasyon tungkol sa +/- 5%, bilang minimum 190g at maximum 210g.

2. Brugsen. Mag-click sa Brugsens para sa karagdagang impormasyon sa loob ng +/- 10%, hanggang sa minimum na 180g at maximum 220g.

3. Aldi. Mag-iwan ng diskwento sa Aldis na diskwento para sa +/- 15%, kahit minimum na 170g at maximum na 230g.

Der er således følgende sorteringer:

Saklaw0: wala sa saklaw

Saklaw1: minimum na 190g / maximum210g

Saklaw2: minimum na 180g / maximum220g

Saklaw3: minimum na 170g / maximum230g

Hakbang 1: Opsamling Af Data para sa Pag-rehistro ng Vtgt Samt Af UID

Opsamling Af Data para sa Pagrehistro ng Samt ng Af UID
Opsamling Af Data para sa Pagrehistro ng Samt ng Af UID

Upang magawa ang data para sa vggt, samahan ang pagrerehistro sa mga tag ng RFID para sa Arduino MEGA2560 sa RFID-RC522 na mambabasa / manunulat. Da vi ikke har nogen vægt, simulerer vi data for vægten med et potmeter tilsluttet en analog indgang på Arduinoen.

Følgende opstilling er anvendt:

1 stk potmeter 25k linya. Yder-benene er tilsluttet hhv. GND og + 5V, midterbenet er tilsluttet AN0

Ang RFID-RC522 ay mayroong mga Arduino boardet SPI port para sa iyo:

SDA -> pin 53

SCK -> pin52

MOSI -> pin51

MISO-> pin50

IRQ -> NC

GND -> GND

RST -> pin5

3.3V -> 3.3V

Ang data ng opsamlede, para sa hhv. Sa gayon, nagpapadala ng isang serye ng port sa isang komisyon na magkakahiwalay ng mga teksto upang mai-node-Red ng isang tao para sa mga ito upang maisagawa ang dashboard ng dashboard at lagring sa database.

Hakbang 2: Arduino-program

I Arduino programmet inkluderes de to biblioteker SPI.h og MFRC522.h for at kunne bruge RFID læseren. Sinimulan ko ang programmet na inisyal ng variable ng anvendte. Der laves en instans af MFRC522. I-setup ko ang blokinisialisial den serielle forbindelse, SPI porten og MFRC522. Derefter scan mag-ehersisyo ang mga tag ng RFID. Para sa ikke at sende det samme UID afsted flere gange efter hinanden, er der lavet en stump kode som tjekker for dette. Narito ang scannet at UID tag, loades arary nyUID med det netop læste UID. Hvis array nyUID er forskellig fra oldUID er der tale om et nyt UID som kay sendes på den serielle port. Hvis nyUID og oldUID er ens, er der tale om samme UID tag og UID'et skal ignoreres. Hvis der er tale om et nyt UID, sendes UID'et på den serielle port sammen med en læst værdi fra den serielle port. Ang analoge værdi skaleres til området 150-250. Nagpadala ang data ng som en komma-separeret tekststreng. Sa detalyadong paraan ng datingUID = nyUID, sinabi at koden klart ng hanggang sa pag-tag at RFID na tag.. Sa pamamagitan ng funktion ng programa sa erk funktion som sammenligner 2 arrays. Funktionen returnerer true hvis array'ne er ens, at maling hvis array'ne er forskellige.

# isama

#include // Ang program na ito ay sumusuri sa mga RFID card gamit ang RDIF-RC522 reader / manunulat ng manunulat. // Nabasa ang UID, nabasa ang isang analog pin. Ang halaga ng analog na 0-1023 ay na-scale sa 150-250. // UID at halagang analog ay ipinapadala bilang teksto na pinaghiwalay ng kuwit sa serial port gamit ang 9600, N, 8, 1. // Ang pangangalaga ay kinuha upang maipadala lamang ang bawat UID nang isang beses sa isang hilera, // isang bagong UID ay dapat na kasalukuyan bago maipadala muli ang parehong UID. // Ang pagpapaandar na ito ay ipinatutupad sa code sa pamamagitan ng paghahambing ng mga arrays: oldUID nyUID sa function array_cmp (oldUID , nyUID )

constexpr uint8_t RST_PIN = 5;

constexpr uint8_t SS_PIN = 53; int sensorPin = A0; int Value = 0; String StringValue = "0000"; byte oldUID [4] = {}; byte nyUID [4] = {};

MFRC522 mfrc522 (SS_PIN, RST_PIN); // Lumikha ng halimbawa ng MFRC522.

walang bisa ang pag-setup ()

{Serial.begin (9600); // Initiate a serial communication SPI.begin (); // Initiate SPI bus mfrc522. PCD_Init (); // Initiate MFRC522}

walang bisa loop ()

{// Maghanap ng mga bagong card kung (! Mfrc522. PICC_IsNewCardPresent ()) {bumalik; } // Piliin ang isa sa mga card kung (! Mfrc522. PICC_ReadCardSerial ()) {bumalik; } // load nyUID with UID tag for (byte i = 0; i <mfrc522.uid.size; i ++) {nyUID = mfrc522.uid.uidByte ; } // if oldUID nyUID if (! array_cmp (oldUID, nyUID)) {// send UID tag on serial port for (byte i = 0; i 1000) {Value = 1000; } Halaga = (Halaga / 10) + 150; // send scaled analog halaga Serial.print (Halaga); // send newline Serial.println (); // set oldUID = nyUID for (byte z = 0; z <4; z ++) oldUID [z] = nyUID [z]; } // wait 1 secs pagkaantala (1000); }

// ihambing ang 2 mga array …

boolean array_cmp (byte a , byte b ) {bool test = true; // subukan ang bawat elemento na maging pareho. kung ang isa lamang ay hindi, bumalik maling para sa (byte n = 0; n <4; n ++) {kung (a [n]! = b [n]) test = false; // kung sa byte ay hindi pantay, test = false} kung (test == true) bumalik ng totoo; kung hindi man ay bumalik nang hindi totoo; }

Hakbang 3: Node-RED, Lagring Af Data I Database

Node-RED, Lagring Af Data I Database
Node-RED, Lagring Af Data I Database
Node-RED, Lagring Af Data I Database
Node-RED, Lagring Af Data I Database

Følgende flow er lavet i node-RED:

COM4 er den serielle forbindelse hvor data modtages fra Arduino boardet. Funktionerne "Hatiin at Kumuha ng halaga" at "Hatiin at Kumuha ng UID" splitter teksstrengen ved kommaet og returnere hhv vægten og UID. Mag-iwan ng mga bruges hanggang sa pagmamasid ng dashboard sa et linechart at sukat. Ang mga UID ay nag-iisa at tekstfelt. Funktionen test_sound advarer verbalt med sætningen "Wala sa saklaw", mas mababa sa 170g higit sa 230g, dvs saklaw ko 0.

Hatiin at Kunin ang halaga:

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

temp = {payload: (output [1])}; ibalik ang temp;

Hatiin at Kumuha ng UID:

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

temp = {payload: output [0]}; ibalik ang temp;

test_sound:

var number = parseInt (msg.payload);

kung (numero> 230 || numero <170) {newMsg = {payload: "Out of range"}; ibalik ang bagongMsg; } iba pa {newMsg = {payload: ""}; ibalik ang bagongMsg; }

Funktionen Hatiin ang string "," indsætter et timestamp, UID at i-download ang database patedb.patelog.

var output = msg.payload.split (","); // split msg.payload by comma into array

UIDTag = output [0]; // unang bahagi sa unang posisyon [0] ValueTag = output [1]; // pangalawang bahagi sa pangalawang posisyon [1]

var m = {

paksa: "INSERT INTO patedb.patelog (timestamp, UID, weight) VALUES ('" + bagong Petsa (). toISOString () + "', '" + UIDTag + "', '" + ValueTag + "');" }; bumalik m;

patelog er en MySQL database forbindelse som er sat op med følgende parametre:

Host: localhost

Port: 3306

Gumagamit: root

Database: patedb

Hakbang 4: Disenyo ng database

Disenyo ng database
Disenyo ng database

Databasen patedb indeholder 4 tabeller

patelog er dataopsamlingstabellen, tilskrives data sa node-RED og C # programmet

mag-order upang mag-ayos ng data ng isang taong nagmamay-ari ng data mula sa genemførte ordrer, mga data sa C # programmet

napapasadyang er et kunderegister

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

Hakbang 5: Patelog

Patelog
Patelog

Tabellen patelog indeholder folgende 6 kolonner:

pangunahing pateID (int) pangunahing key at inkrementeres automatisk.

Ang Timestamp, UID at ang mga sumusunod na typy varchar (med forskellig max længde)

rangeNr er af typen tinyint (bigyan ng impormasyon ang C # programmet)

orderID er af typen int (orderID tilføjes af C # programmet)

Node-RED tilføjer ikke værdier til kolonnerne rangeNr og orderID. rangeNr og orderID tillader NULL værdier, det bruges i C # programmet til at detektere de rækker som skal tilskrives værdier for rangeNr og orderID

Hakbang 6: Orderable

Ordertable
Ordertable

ordertable indeholder 5 kolonner:

orderID (int) er det aktuelle ordrenummer

orderQuant (mediumint) ay nag-uutos sa pålydende antal

damiProduced (mediumint) er antal der rent faktisk er produceret på ordren. (Mga programa sa C # programmet)

magbigay ng puna (tinytext) para sa komentar sa orden.

customerID (int) er det aktuelle kundenummer på ordren.

Hakbang 7: Customable

Napapasadya
Napapasadya

napapasadyang indeholder 6 kolonner:

pangunahing pangunahing susi ng customerID (int) at auto inc.

pangalan, address, telepono, email (varchar) med forskellig max længde

rangeNr (int)

Hakbang 8: Maaaring saklawin

Rangetable
Rangetable

rangetable indeholder 3 kolonner:

rangeNr (int) ang pangunahing key at auto inc.

rangeMin (int)

rangeMax (int)

Hakbang 9: C # Program

C # Program
C # Program

Når der produceres en ordre leverpostej, er procedureuren følgende:

Kundenummer, ordrenummer, ordreantal at en eventuel kommentar indtastes i C # programmet (i praksis overføres det digitalt fra virksomhedens ordresystem. Nagsisimula ang Produktionen na sinubukan ang 'start'- knappen. på et transportbånd) Samhørende værdier af UID og den aktuelle vægt sendes serielt til node-RED, som viser de opsamlede data på dashboard 'et. Samtidig skrives timestamp, UID og vægt i en ny række i patedb.patelog tabellenæ. tidspunkt ikke tilskrives værdier til rangeNr og orderID vil de have værdien NULL.

Med et timerinterval undersøger C # programmet patedb.patelogtabellen for nye tilkomne rækker med NULL værdier i rangeNr kolonnen. Når der er detekteret en række med NULL værdi, beregnes rangeNr og det tilføjes sammen med det aktuelle orderID. Huwag mag-ayos ng mga taga-gawa, mga aplasyon o takbo ng pagsubok na huminto”- knappen. Når ordren afsluttes, tilføjes en række til patedb.ordertable med de aktuelle ordredata. Sa gayon ay naayos ang lahat, upang mai-data ang mga ito sa patelog na tabellen fremvises ved at trykke på de forskellige knapper sa gruppen na I-update ang DataGridview. ordertable para sa mga vises, at para sa iyong mga order sa bawat indibidwal na UID'er eller kundedata på indibidwaluelle ordrer.

gamit ang System; gamit ang System. Collection. Generic; gamit ang System. ComponentModel; gamit ang System. Data; gamit ang System. Pagguhit; gamit ang System. Linq; gamit ang System. Txt; gamit ang System. Treading. Tasks; gamit ang System. Windows. Forms; gamit ang MySql. Data. MySqlClient;

namespace show_data_from_database

{pampublikong bahagyang klase Form1: Form {MySqlConnection connection = bagong MySqlConnection ("datasource = localhost; username = root; password = ''"); int RowNumber = 0; // Variable para sa pagtatago ng halaga ng pateID int RangeNumber = 0; // Variable para sa pagtatago ng rangenumber int weight = 0; // Variable para sa pagtatago ng timbang int OrderNr = 0; // Variable para sa pagtatago ng OrderNR int QuantProduced = 0; // Variable para sa pag-iimbak ng dami na ginawa int NumberOfRows = 0; // number of row with nulls.. bool ProdRunning = false; // Variable na nagpapahiwatig kung ang mga pindutan ng start & stop ay naaktibo int limitasyon = bagong int [6]; // ipasimula ang array sa CustomerID; // Variable para sa pagtatago ng customerID public Form1 () {InitializeComponent (); load_table (); // call load_table}

walang bisa load_table ()

{MySqlCommand command = bagong MySqlCommand ("PUMILI * MULA sa patedb.patelog ORDER NG timestamp DESC;", koneksyon); subukan ang {MySqlDataAdapter adapter = bagong MySqlDataAdapter (); adapter. SelectCommand = utos; DataTable dbdataset = bagong DataTable (); adapter. Punan (dbdataset); BindingSource bsource = bagong BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adapter. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (hal. mensahe); }}

pribadong walang bisa na SetRowOrder ()

{dataGridView1. Columns ["pateID"]. DisplayIndex = 0; // Her kan rækkefølgen af kolonner ændres dataGridView1. Columns ["timestamp"]. DisplayIndex = 1; // Her kan rækkefølgen af kolonner ændres dataGridView1. Columns ["UID"]. DisplayIndex = 2; // Her kan rækkefølgen af kolonner ændres dataGridView1. Columns ["weight"]. DisplayIndex = 3; // Her kan rækkefølgen af kolonner ændres dataGridView1. Columns ["rangeNr"]. DisplayIndex = 4; // Her kan rækkefølgen af kolonner ændres dataGridView1. Columns ["orderID"]. DisplayIndex = 5; // Her kan rækkefølgen af kolonner ændres}

pribadong walang bisa na GetData_Click (nagpadala ng bagay, EventArgs e) // Binabasa ang talahanayan ng database at mga order ng Timestamp

{load_table (); }

pribadong void btnRefreshUID_Click (object sender, EventArgs e) //

{string timeStr = "SELECT * MULA sa patedb.patelog ORDER BY UID;"; Utos ng MySqlCommand = bagong MySqlCommand (timeStr, koneksyon); subukan ang {MySqlDataAdapter adapter = bagong MySqlDataAdapter (); adapter. SelectCommand = utos; DataTable dbdataset = bagong DataTable (); adapter. Punan (dbdataset); BindingSource bsource = bagong BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adapter. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (hal. mensahe); }}

pribadong walang bisa btnRefreshValue_Click (nagpadala ng bagay, EventArgs e)

{string weightSort = "SELECT * MULA sa patedb.patelog ORDER BY CAST (bigat AS SIGNED INTEGER);"; Utos ng MySqlCommand = bagong MySqlCommand (weightSort, koneksyon); subukan ang {MySqlDataAdapter adapter = bagong MySqlDataAdapter (); adapter. SelectCommand = utos; DataTable dbdataset = bagong DataTable (); adapter. Punan (dbdataset); BindingSource bsource = bagong BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adapter. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (hal. mensahe); }}

pribadong walang bisa ChkNullBtn_Click (nagpadala ng object, EventArgs e)

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

pribadong walang bisa na CheckTableForNull ()

{// Suriin / itakda ang timerinterval minimum na 100 ms int i; int. TryParse (textTimer1. Txt, out i); kung (i <100) {timer1. Stop (); i = 100; timer1. Interval = i; MessageBox. Show ("Minimum na halaga i 100mS"); timer1. Sart (); } iba pa {timer1. Interval = i; } textTimer1. Txt = timer1. Interval. ToString (); // Suriin kung ang anumang mga hilera na may null magagamit sa talahanayan, ibabalik ang bilang ng mga hilera sa variable: NumberOfRows string weightStr = ""; string chkNull = "SELECT COUNT (*) MULA sa patedb.patelog SAAN ang saklawNR AY NULL ORDER NG pateID LIMIT 1;"; Utos ng MySqlCommand = bagong MySqlCommand (chkNull, koneksyon); subukan ang {connection. Open (); NumberOfRows = Convert. ToInt32 (utos. ExecutScalar ()); koneksyon. Close (); } catch (Exception ex) {MessageBox. Show (hal. mensahe); } sa wakas {kung (NumberOfRows! = 0) {subukan {// Pinipili ang pinakamababang numero ng pateID kung saan ang rangeNr ay Null string readID = "SELECT pateID MULA sa patedb.patelog WHERE rangeNR IS NULL ORDER BY pateID ASC LIMIT 1;"; MySqlCommand cmdID = bagong MySqlCommand (readID, koneksyon); {koneksyon. Buksan (); RowNumber = (int) cmdID. ExecutScalar (); // integer !! koneksyon. Close (); } listPateID. Txt = RowNumber. ToString (); // read out napiling numero ng PateID // Pinipili ang timbang mula sa napiling hilera ng rownumber string = RowNumber. ToString (); string readweight = "SELECT weight MULA sa patedb.patelog WHERE pateID =" + row; MySqlCommand cmdweight = bagong MySqlCommand (readweight, koneksyon); {koneksyon. Buksan (); weightStr = (string) cmdweight. ExecutScalar (); // String !! koneksyon. Close (); } timbang = int. Parse (weightStr); // convert to int txtWeight. Txt = weight. ToString (); // print int RangeNumber = 0; kung (timbang> = limitasyon [0] && timbang = limitasyon [2] && timbang = limitasyon [4] && timbang <= limitasyon [5]) {RangeNumber = 3; }} txtRange. Txt = RangeNumber. ToString (); UpdateLog (); } catch (Exception ex) {MessageBox. Show (hal. mensahe); } QuantProduced = QuantProduced + 1; }}} pribadong void btnStart_Click (object sender, EventArgs e) {kung (ProdRunning == false) {int valtest; subukan ang {CustomerID = int. Parse (txtCustomerNr. Text); // read customerID} catch {MessageBox. Show ("Ipasok ang data ng produksyon at pindutin ang pindutang 'start'."); }

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

MySqlCommand cmdtestcustomer = bagong MySqlCommand (pagsubok, koneksyon); {koneksyon. Buksan (); valtest = Convert. ToInt32 (cmdtestcustomer. ExecutScalar ()); // nagbabalik ng 0 kung ang customer ay walang koneksyon. Close (); } kung (valtest == 1) // kung mayroon ang customer sa database - simulan ang paggawa {subukan {OrderNr = int. Parse (txtOrderNumber. Text); ProdRunning = totoo; timer1. Sart (); textTimer1. Txt = timer1. Interval. ToString (); Mga ReadLimits (); } catch (Exception ex) {MessageBox. Show ("Ipasok ang data ng produksyon at pindutin ang pindutang 'start'."); }} iba pa MessageBox. Show ("Customer wala sa database, subukang muli"); } // ReadLimits (); }

pribadong walang bisa na ReadLimits ()

{// Binabasa ang mga limitasyon mula sa rangetable, saklaw 1 hanggang 3 int counter = 0; para sa (int rangeNr = 1; rangeNr <4; rangeNr ++) {string readmin = "SELECT rangeMin MULA sa patedb.rangetable WHERE rangeNr =" + rangeNr; MySqlCommand cmdmin = bagong MySqlCommand (readmin, koneksyon); {koneksyon. Buksan (); nililimitahan [counter] = (int) cmdmin. ExecutScalar (); counter = counter + 1; koneksyon. Close (); } // MessageBox. Show (counter. ToString ()); string readmax = "SELECT rangeMax MULA sa patedb.rangetable WHERE rangeNr =" + rangeNr; MySqlCommand cmdmax = bagong MySqlCommand (readmax, koneksyon); {koneksyon. Buksan (); nililimitahan [counter] = (int) cmdmax. ExecutScalar (); counter = counter + 1; koneksyon. Close (); }} // pagtatapos para sa loop}

pribadong walang bisa ang UpdateLog ()

{// UPDATE rangeNR & orderID string Range = RangeNumber. ToString (); Order ng order = OrderNr. ToString (); pag-update ng string = "UPDATE patedb.patelog SET rangeNr =" + Range + ',' + "orderID =" + OrderNr + "WHERE pateID =" + RowNumber; MySqlCommand updatecmd = bagong MySqlCommand (pag-update, koneksyon); subukan ang {connection. Open (); updatecmd. ExecutNonQuery (); koneksyon. Close (); } catch (Exception ex) {MessageBox. Show (hal. mensahe); }}

pribadong void btnStop_Click (nagpadala ng object, EventArgs e)

{kung (ProdRunning == totoo) {timer1. Stop (); ProdRunning = false; UpdateOrderTable (); } iba pa {MessageBox. Show ("Wala pang pagsisimula ng produksyon. Ipasok ang data at pindutin ang pindutang 'start'"); }}

pribadong void UpdateOrderTable ()

{string insert = "INSERT INTO patedb.ordertable (orderID, orderQuant, damiProduced, comment, customerID) VALUES ('" + this.txtOrderNumber. Text + "', '" + this.txtOrderQuant. Txt + "', '" + QuantProduced. ToString () + "','" + this.txtComment. Txt + "','" + this.txtCustomerNr. Txt + "');"; MySqlCommand insertcmd = bagong MySqlCommand (insert, koneksyon); subukan ang {connection. Open (); insertcmd. ExecutNonQuery (); koneksyon. Close (); QuantProduced = 0; } catch (Exception ex) {MessageBox. Show (hal. mensahe); }}

pribadong void timer1_Tick (nagpadala ng object, EventArgs e)

{CheckTableForNull (); load_table (); }

pribadong walang bisa btnShowOrderTable_Click (nagpadala ng bagay, EventArgs e)

{if (ProdRunning == false) {MySqlCommand command = new MySqlCommand ("SELECT * MULA sa patedb.ordertable ORDER BY orderID DESC;", koneksyon); subukan ang {MySqlDataAdapter adapter = bagong MySqlDataAdapter (); adapter. SelectCommand = utos; DataTable dbdataset = bagong DataTable (); adapter. Punan (dbdataset); BindingSource bsource = bagong BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapter. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (hal. mensahe); }} iba pa {MessageBox. Show ("Pindutin ang stop to wiev orderTable"); }}

pribadong walang bisa btnShowOrderDetails_Click (nagpadala ng bagay, EventArgs e)

{if (ProdRunning == false) {string test = ("SELECT patedb.ordertable.orderID, orderQuant, quantProduced, comment, customerID MULA sa patedb.ordertable INNER JOIN patedb.patelog ON patedb.patelog.orderID = patedb.ordertable.orderID WHERE patedb.patelog. UID = '"+ txtShowOrderDetails. Txt +"' "); Utos ng MySqlCommand = bagong MySqlCommand (pagsubok, koneksyon); subukan ang {connection. Open (); MySqlDataAdapter adapter = bagong MySqlDataAdapter (); adapter. SelectCommand = utos; DataTable dbdataset = bagong DataTable (); adapter. Punan (dbdataset); BindingSource bsource = bagong BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapter. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (hal. mensahe); } koneksyon. Isara (); } iba pa {MessageBox. Show ("Pindutin ang stop upang tingnan ang mga detalye ng order"); }}

pribadong walang bisa btnShowCustomerDetails_Click (nagpadala ng bagay, EventArgs e)

{if (ProdRunning == false) {string test = ("SELECT patedb.customertable.customerID, pangalan, address, telepono, email, rangeNr MULA sa patedb.customertable INNER JOIN patedb.ordertable ON patedb.ordertable.customerID = patedb.customertable. customerID WHERE patedb.ordertable.orderID = '"+ txtShowCustomerDetails. Txt +"' "); Utos ng MySqlCommand = bagong MySqlCommand (pagsubok, koneksyon); subukan ang {MySqlDataAdapter adapter = bagong MySqlDataAdapter (); adapter. SelectCommand = utos; DataTable dbdataset = bagong DataTable (); adapter. Punan (dbdataset); BindingSource bsource = bagong BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapter. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (hal. mensahe); }} iba pa {MessageBox. Show ("Pindutin ang paghinto upang wiev mga detalye ng customer"); }}}

}

Inirerekumendang: