Përmbajtje:

Baza e të dhënave EAL-Industri4.0-RFID Të dhëna të mostrave në të dhëna të mostrave: 10 hapa (me fotografi)
Baza e të dhënave EAL-Industri4.0-RFID Të dhëna të mostrave në të dhëna të mostrave: 10 hapa (me fotografi)

Video: Baza e të dhënave EAL-Industri4.0-RFID Të dhëna të mostrave në të dhëna të mostrave: 10 hapa (me fotografi)

Video: Baza e të dhënave EAL-Industri4.0-RFID Të dhëna të mostrave në të dhëna të mostrave: 10 hapa (me fotografi)
Video: ЗЕМЛЯ В ИЛЛЮМИНАТОРЕ !| ЧТО НОВОГО В ОБНОВЛЕНИИ ► 1 (часть 1) Прохождение ASTRONEER 2024, Nëntor
Anonim
Baza e të dhënave EAL-Industri4.0-RFID Dataopsamling në të dhëna
Baza e të dhënave EAL-Industri4.0-RFID Dataopsamling në të dhëna

Përzgjidhni një projekt gjithëpërfshirës, duke u regjistruar në këtë faqe. RFID, duke mbetur pas të dhënave në bazën e të dhënave MySQL. nyje-KUQ, vetëm për të kontrolluar dhe për të vepruar nga të dhënat e zgjedhura në programin C# dhe formularin nga Aplikacioni Windows Form. Vi pylltarët për skedarët:

Vi har en produktionslinje som productrer leverpostej i 200g foliebakker. Të gjitha pajisjet do të përdorin pas përdorimit të med dhe etiketës RFID në plastikë/etiketë, nga një mbajtës i paidentifikuar dhe unikt ID (UID = Identifikuesi Unik, në kodin 32 bit, 8 karaktere hexadecimale) për entydig identifikimin nga hver enkelt bakke lever Për më tepër, ju do të lexoni në leverpostej kan svinge (afgæng råvarer, fordampning dhe ovn mm), dhe nëse ju do të gjeni një specifikim të mëtejshëm, bruges UID tagget til at knytte hver enkret leverpostj leverpostej leverpostej leverpostej leverpostej leverpostej tver leverpostejer til én specifik kunde. Kunderne er supermarketskæder:

1. Irma. Vgten på Irmas luksus leverpostej skal holde sig inden për +/- 5%, më së paku 190g dhe maksimum 210g.

2. Brugsen. Vægten på Brugsens leverpostej skal holde sig inden për +/- 10%, më së paku 180g dhe maksimum 220g.

3. Aldi. Vægten på Aldis zbritje leverpostej skal holde sig inden për +/- 15%, më së paku 170g dhe maksimum 230g.

Der er således følgende sorteringer:

Gama 0: jashtë rrezes

Gama 1: minimumi 190g/maksimumi 210g

Gama 2: minimumi 180g/maksimumi 220g

Gama 3: minimumi 170g/maksimumi 230g

Hapi 1: Opsamling të dhënat Af për Vægt Samt Regjistrimi Af UID

Opsamling Af të dhënat për Vægt Samt Regjistrimi Af UID
Opsamling Af të dhënat për Vægt Samt Regjistrimi Af UID

Përdorimi i të dhënave për këtë, ju mund të regjistroheni në etiketat RFID dhe të lexoni në Arduino MEGA2560 me lexues/shkrimtar RFID-RC522. Për më tepër, nuk mund të përdorni të dhëna të tjera, për të dhëna të mëtejshme për mediat dhe potmetrën në analoge indgang në Arduinoen.

Følgende kundërshton errësimin:

1 stok potmeter 25k lineært. Yder-benene er tilsluttet hhv. GND og +5V, midterbenet er tilsluttet AN0

RFID-RC522 er tilsluttet Arduino bordet SPI porti për skedarët e mëposhtëm:

SDA -> pin 53

SCK -> pin52

MOSI -> pin51

MISO-> pin50

IRQ -> NC

GND -> GND

RST -> pin5

3.3V -> 3.3V

De opsamlede të dhënave, për hhv. UID-i mund të shikohet, të dërgojë një serielle port në një kompozim-veçesë tekstesh që të transmetojnë videon në nyje-Red për të përcaktuar paraqitjen më të shpejtë dhe të pultit dhe një lagring në bazën e të dhënave.

Hapi 2: Programi Arduino

Unë Arduino programoj inkluderes për biblioteker SPI.h dhe MFRC522.h për kunne bruge RFID të përdorura. Filloj nga programmet fillestare të ndryshueshme të ndryshimit. Der laves en instans af MFRC522. Unë konfiguroj fillimet e bllokuara në serielle të ndaluara, porta SPI dhe MFRC522. Deferter skanon pas etiketave RFID. Për ikke at sende det samme UID afsted flere gange efter hinanden, er der lavet en cump kode som tjekker for dette. Når der er scannet dhe etiketën UID, ngarkon nyUID nga faqja e internetit duke përdorur UID. Hray array nyUID ose forskellig fra oldUID mund të tregohet nga të gjithë dhe nga UID që mund të dërgojë në portin e serisë. Ju nuk mund ta konsideroni atë në UDH oldHEQ, por do të thoni një tregues të vetëm të UID -it dhe të UID'et që nuk i përfillni. Hvis der er tale om et nyt UID, dërgon UID'et på den serielle port sammen med en læst værdi fra den serielle port. Den analoge værdi skaleres til området 150-250. Të dhënat dërgohen në një tekst të ndryshëm. Për më tepër, ju mund të përdorni oldUID = nyUID, të regjistroheni në kodin tuaj dhe të përdorni etiketën RFID.. Përfundimi i funksionimit të programit do të funksionojë nga sammenligner 2 vargje. Funksionet e kthyesve të vërteta të grupit të tyre, dhe të rreme të grupit të gabuar të forskellige.

#përfshi

#include // Ky program skanon kartat RFID duke përdorur bordin e lexuesit/shkrimtarit RDIF-RC522. // UID lexohet, lexohet një pin analog. Vlera analoge 0-1023 shkallëzohet në 150-250. // UID dhe vlera analoge dërgohet si tekst i ndarë me presje në portin serik duke përdorur 9600, N, 8, 1. // Careshtë bërë kujdes që të dërgoni çdo UID vetëm një herë rresht, // një UID i ri duhet të jetë prezent para se e njëjta UID të mund të dërgohet përsëri. // Ky funksion zbatohet në kod duke krahasuar vargjet: oldUID nyUID në funksionin array_cmp (oldUID , nyUID )

constexpr uint8_t RST_PIN = 5;

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

MFRC522 mfrc522 (SS_PIN, RST_PIN); // Krijo shembullin MFRC522.

void setup ()

{Serial.fillo (9600); // Filloni një komunikim serik SPI.filloni (); // Filloni autobusin SPI mfrc522. PCD_Init (); // Filloni MFRC522}

lak void ()

{// Kërkoni karta të reja nëse (! Mfrc522. PICC_IsNewCardPresent ()) {ktheheni; } // Zgjidhni një nga kartat nëse (! Mfrc522. PICC_ReadCardSerial ()) {kthehet; } // ngarkoni nyUID me etiketën UID për (byte i = 0; i <mfrc522.uid.size; i ++) {nyUID = mfrc522.uid.uidByte ; } // if oldUID nyUID if (! array_cmp (oldUID, nyUID)) {// dërgoni etiketën UID në portin serik për (byte i = 0; i 1000) {Vlera = 1000; } Vlera = (Vlera / 10) + 150; // dërgoni vlerë analoge të shkallëzuar Serial.print (Vlera); // dërgoni linjën e re Serial.println (); // vendos oldUID = nyUID për (byte z = 0; z <4; z ++) oldUID [z] = nyUID [z]; } // prisni 1 sekonda vonesë (1000); }

// Krahasoni 2 vargje…

boolean array_cmp (byte a , byte b ) {bool test = true; // testoni që çdo element të jetë i njëjtë. nëse vetëm një nuk është, kthehu false për (byte n = 0; n <4; n ++) {nëse (a [n]! = b [n]) test = false; // nëse në byte nuk është e barabartë, test = false} nëse (test == e vërtetë) kthehet e vërtetë; përndryshe kthehu i rremë; }

Hapi 3: Nyja-RED, Lagring Af Data I Database

Nyja-DAR, Lagring Af Databaza e të Dhënave I
Nyja-DAR, Lagring Af Databaza e të Dhënave I
Nyja-DAR, Lagring Af Databaza e të Dhënave I
Nyja-DAR, Lagring Af Databaza e të Dhënave I

Følgende flow er lavet dhe node-KUQ:

COM4 është një seri e ndaluar për modifikimet e të dhënave nga bordi Arduino. Funksionet "Ndani dhe merrni vlerë" dhe "Ndani dhe merrni UID" ndarës teksstrengen u bashkua dhe u kthyen në hhv dhe në UID. Vægten shpërthen deri në kontrollin e panelit të kontrollit dhe të hartimit dhe shkallës. UID fremvises i tekstit. Funktionen test_sound advarer verbalt med sætningen "Out of range", ai është nën 170g ose më shumë se 230g, dvs në rangun 0.

Ndani dhe merrni vlerë:

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

temp = {ngarkesa: (dalja [1])}; temperatura e kthimit;

Ndani dhe merrni UID:

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

temp = {ngarkesa: dalja [0]}; temperatura e kthimit;

test_sound:

var var = parseInt (msg.payload);

if (numri> 230 || numri <170) {newMsg = {ngarkesa: "Jashtë kufirit"}; kthehu newMsg; } else {newMsg = {ngarkesa: ""}; kthehu newMsg; }

Funksionet e Ndarjes së vargut "," indsætter dhe timestamp, UID dhe të dhënat e regjistruara në bazën e të dhënave patedb.patelog.

var output = msg.payload.split (","); // ndani msg.payload me presje në grup

UIDTag = dalja [0]; // pjesa e parë në pozicionin e parë [0] ValueTag = dalja [1]; // pjesa e dytë në pozicionin e dytë [1]

var m = {

tema: "INSERT INTO patedb.patelog (vula kohore, UID, pesha) VLERAT ('"+Data e re (). toISOString ()+"', '"+UIDTag+"', '"+ValueTag+"');" }; kthehem m;

patelog er en MySQL databaza ndalon disa opsione për parametrat:

Pritësi: localhost

Porti: 3306

Përdoruesi: rrënjë

Baza e të dhënave: patedb

Hapi 4: Dizajni i bazës së të dhënave

Dizajni i bazës së të dhënave
Dizajni i bazës së të dhënave

Mbajtës i të dhënave me bazë të dhënash patedb 4 tabelë

patelog er dataopsamlingstabellen, tilskrives të dhënat nga node-RED og C# programmet

mund të porositen në të dhëna nga të dhëna të pa zotëruara nga një urdhërues i përgjithshëm, tilskrives të dhëna nga programi C#

customertable er et kunderegister

Rangetable er en tabel som indeholder grænseværdierne për de i C# programmet benyttede vargjet.

Hapi 5: Patelog

Patelog
Patelog

Tabellen patelog indeholder folgende 6 kolonner:

pateID (int) er çelësi primar dhe inkrementeres automatisk.

Koha kohore, UID & vægt er af typen varchar (med forskellig max længde)

vargNr er af typen tinyint (paragjykimet dhe të dhënat e C# programmet)

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

Nyja-RED tilføjer ikke værdier til kolonnerne rangeNr og orderID. varg Nr og urdhërimi i tokëzimit NULL værdier, det bruges i C# programmet deri në detektere de rækker som skal tilskrives værdier për vargNr og urdhër ID

Hapi 6: I rregullueshëm

I porositshëm
I porositshëm

mbajtës i paligjshëm i porositur 5 kolonner:

orderID (int) er det aktuelle ordrenummer

urdhërQuant (mediumint) er ordens pålydende antal

quantProduced (mediumint) er antal der rent faktisk er productret på ordren. (Programi T Clles af C#)

koment (tinytext) er en eventuel kommentar til ordren.

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

Hapi 7: I përshtatshëm për konsum

I këndshëm
I këndshëm

mbajtës i paligjshëm i kujdestarisë 6 kolonner:

clientID (int) er çelësi kryesor dhe auto inc.

emri, adresa, telefoni, emaili (varchar) med forskellig max længde

diapazoni Nr (int)

Hapi 8: Rangetable

E argetueshme
E argetueshme

pronar i pakujdesshëm 3 kolonner:

rangeNr (int) er çelësi kryesor dhe auto inc.

diapazoni Min (int)

vargMax (int)

Hapi 9: Programi C#

Programi C#
Programi C#

Når der productionres en ordre leverpostej, ose procedurat e dhëna:

Kundenummer, ordrenummer, ordreantal og en eventuel kommentar indtastes në programin C# (unë rekomandoj që të tejkaloj ato dixhitale në sistemin e zakonshëm. Produktet filluan të mos kenë një përpjekje për të filluar '- të hapen. på et transportbånd) Samhørende værdier af UID dhe den aktuelle dërgon shërbime në node-RED, si dhe shikoni opsionet e zgjedhura në pult dhe et. Samtidig skrives timestamp, UID dhe vægt i en ny række i patedb. 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. Når en ordre er productret, afsluttes ordren ved tryk på "stop"- knappen. Når ordren afsluttes, tilføjes en række til patedb.ordertable med de aktuelle ordredata. Ne nuk mund ta përdorim atë, mund të zgjedhim të dhëna dhe skedarë të ndryshëm të fremvises dhe të përpiqemi të përdorim një kapacitet të ri dhe të përditësojmë Update DataGridview. mund të porositen vizatime, dhe mund të përcaktohen nga individueller UID'er eller kundedata në individualuelle ordrer.

duke përdorur Sistemin; duke përdorur System. Collections. Generic; duke përdorur System. ComponentModel; duke përdorur System. Data; duke përdorur System. Drawing; duke përdorur System. Linq; duke përdorur System. Text; duke përdorur System. Threading. Tasks; duke përdorur System. Windows. Forms; duke përdorur MySql. Data. MySqlClient;

hapësira e emrave show_data_from_database

{klasa e pjesshme publike Form1: Formulari {MySqlConnection connection = MySqlConnection i ri ("datasource = localhost; username = root; password = ''"); int RowNumber = 0; // Ndryshore për ruajtjen e vlerës pateID int RangeNumber = 0; // Variabël për ruajtjen e numrit të rangut int në peshë = 0; // Ndryshore për ruajtjen e peshës në OrderNr = 0; // Ndryshore për ruajtjen e OrderNR int QuantProduced = 0; // Ndryshore për ruajtjen e sasisë së prodhuar në NumberOfRows = 0; // numri i rreshtave me nulls.. bool ProdRunning = false; // Variabla që tregon nëse butonat start & stop janë aktivizuar int limitet = new int [6]; // inicializoni grupin int CustomerID; // Ndryshore për ruajtjen e klientit ID Form1 () {InitializeComponent (); tabela e ngarkesës (); // thirrje_tabela e ngarkesës}

pavlefshme_tabela e ngarkesës ()

{Komanda MySqlCommand = MySqlCommand i ri ("SELECT * NGA patedb.patelog ORDER BY timeestamp DESC;", lidhje); provo {MySqlDataAdapter përshtatës = MySqlDataAdapter i ri (); përshtatës. SelectCommand = komandë; DataTable dbdataset = DataTable e re (); përshtatës. Plotësoni (dbdataset); BindingSource bsource = i ri BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); përshtatës. Përditëso (dbdataset); } kap (përjashtim përjashtim) {MessageBox. Show (p.sh. Mesazh); }}

zbrazëti private 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. Kollonat ["pesha"]. DisplayIndex = 3; // Ajo mund të kontrollojë të dhënat tuaja në GridView1. Columns ["rangeNr"]. DisplayIndex = 4; // Mund të kontrollohet nga kolonnerët dhe të dhënat dataGridView1. Kollonat ["orderID"]. DisplayIndex = 5; // Her kan rækkefølgen af kolonner ændres}

zbrazëti private GetData_Click (dërguesi i objektit, EventArgs e) // Lexon tabelën e bazës së të dhënave dhe urdhrat sipas Timestamp

{tryeza_ ngarkese (); }

zbrazëti private btnRefreshUID_Click (dërguesi i objektit, EventArgs e) //

{string timeStr = "SELECT * NGA patedb.patelog ORDER NGA UID;"; Komanda MySqlCommand = MySqlCommand i ri (timeStr, lidhje); provo {MySqlDataAdapter përshtatës = MySqlDataAdapter i ri (); përshtatës. SelectCommand = komandë; DataTable dbdataset = DataTable e re (); përshtatës. Plotësoni (dbdataset); BindingSource bsource = i ri BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); përshtatës. Përditëso (dbdataset); } kap (përjashtim përjashtim) {MessageBox. Show (p.sh. Mesazh); }}

zbrazëti private btnRefreshValue_Click (dërguesi i objektit, EventArgs e)

{string weightSort = "SELECT * NGA patedb.patelog POROSIT ME KAST (pesha SI N SNSHTUAR INTEGER);"; Komanda MySqlCommand = MySqlCommand e re (renditja e peshës, lidhja); provo {MySqlDataAdapter përshtatës = MySqlDataAdapter i ri (); përshtatës. SelectCommand = komandë; DataTable dbdataset = DataTable e re (); përshtatës. Plotësoni (dbdataset); BindingSource bsource = i ri BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); përshtatës. Përditëso (dbdataset); } kap (përjashtim përjashtim) {MessageBox. Show (p.sh. Mesazh); }}

zbrazëti private ChkNullBtn_Click (dërguesi i objektit, EventArgs e)

{if (ProdRunning) {CheckTableForNull (); tabela e ngarkesës (); }}

zbrazëti private CheckTableForNull ()

{// Kontrolloni/vendosni afatin kohor minimal 100 ms int i; int. TryParse (textTimer1. Text, out i); nëse (i <100) {timer1. Stop (); i = 100; kohëmatësi 1. Intervali = i; MessageBox. Show ("Vlera minimale i 100mS"); timer1. Start (); } else {timer1. Interval = i; } textTimer1. Text = timer1. Interval. ToString (); // Kontrolloni nëse ndonjë rresht me null të disponueshëm në tabelë, kthen numrin e rreshtave në ndryshore: NumberOfRows string stringStr = ""; string chkNull = "SELECT COUNT (*) NGA patedb.patelog KU vargu NR ORSHT URDHR NULL NGA KUFI PATID 1;"; Komanda MySqlCommand = MySqlCommand i ri (chkNull, lidhje); provo {connection. Open (); NumberOfRows = Convert. ToInt32 (command. ExecuteScalar ()); lidhje. Mbyll (); } kap (përjashtim përjashtim) {MessageBox. Show (p.sh. Mesazh); } më në fund {if (NumberOfRows! = 0) {try {// Zgjedh numrin më të ulët të pateID ku rangeNr është NULL string readID = "SELECT pateID FROM patedb.patelog WHERE rangeNR IS NULL ORDER BY pateID ASC LIMIT 1;"; MySqlCommand cmdID = MySqlCommand i ri (lexo, lidhja); {lidhje. Hap (); RowNumber = (int) cmdID. ExecuteScalar (); // numër i plotë !! lidhje. Mbyll (); } listPateID. Text = RowNumber. ToString (); // lexoni numrin e përzgjedhur PateID // Zgjedh peshën nga rreshti i zgjedhur i vargut të zgjedhur të rreshtit = RowNumber. ToString (); string readweight = "SELECT pesha NGA patedb.patelog KU pateID =" + rresht; MySqlCommand cmdweight = MySqlCommand i ri (pesha e lexuar, lidhje); {lidhje. Hap (); weightStr = (varg) cmdweight. ExecuteScalar (); // Varg !! lidhje. Mbyll (); } pesha = int. Parse (weightStr); // konverto në int txtWeight. Text = peshë. ToString (); // print int RangeNumber = 0; nëse (pesha> = kufijtë [0] && pesha = kufijtë [2] && pesha = kufijtë [4] && pesha <= kufijtë [5]) {Numri i diapazonit = 3; }} txtRange. Text = RangeNumber. ToString (); UpdateLog (); } kap (përjashtim përjashtim) {MessageBox. Show (p.sh. Mesazh); } QuantProduced = QuantProduced + 1; }}} private void btnStart_Click (dërguesi i objektit, EventArgs e) {if (ProdRunning == false) {int valtest; provo {CustomerID = int. Parse (txtCustomerNr. Text); // lexo customerID} kap {MessageBox. Show ("Fut të dhënat e prodhimit dhe shtyp butonin 'start'."); }

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

MySqlCommand cmdtestcustomer = MySqlCommand i ri (test, lidhje); {lidhje. Hap (); valtest = Convert. ToInt32 (cmdtestcustomer. ExecuteScalar ()); // kthen 0 nëse klienti nuk ekziston lidhje. Mbyll (); } nëse (valtest == 1) // nëse klienti ekziston në bazën e të dhënave - filloni prodhimin {provoni {OrderNr = int. Parse (txtOrderNumber. Text); ProdRunning = e vërtetë; timer1. Start (); textTimer1. Text = timer1. Interval. ToString (); ReadLimits (); } catch (përjashtim përjashtim) {MessageBox. Show ("Fut të dhënat e prodhimit dhe shtyp butonin 'start'."); }} else MessageBox. Show ("Klienti nuk është në bazën e të dhënave, provo përsëri"); } // Limitet e leximit (); }

void privat ReadLimits ()

{// Lexon kufijtë nga rangetable, diapazoni 1 deri në 3 int counter = 0; për (int rangeNr = 1; rangeNr <4; rangeNr ++) {string readmin = "SELECT rangeMin FROM patedb.rangetable WHERE rangeNr ="+rangeNr; MySqlCommand cmdmin = MySqlCommand i ri (readmin, lidhje); {lidhje. Hap (); limitet [kundër] = (int) cmdmin. ExecuteScalar (); counter = counter + 1; lidhje. Mbyll (); } // MessageBox. Show (counter. ToString ()); string readmax = "SELECT rangeMax FROM patedb.rangetable WHERE rangeNr =" + rangeNr; MySqlCommand cmdmax = MySqlCommand i ri (readmax, lidhje); {lidhje. Hap (); limitet [kundër] = (int) cmdmax. ExecuteScalar (); counter = counter + 1; lidhje. Mbyll (); }} // fund për lak}

zbrazëti private UpdateLog ()

{// UPDATE rangeNR & orderID string Range = RangeNumber. ToString (); string Order = OrderNr. ToString (); string update = "UPDATE patedb.patelog SET rangeNr ="+Gama+','+"orderID ="+OrderNr+"KU pateID ="+Numri i rreshtit; MySqlCommand updatecmd = MySqlCommand i ri (përditësim, lidhje); provo {connection. Open (); updatecmd. ExecuteNonQuery (); lidhje. Mbyll (); } kap (përjashtim përjashtim) {MessageBox. Show (p.sh. Mesazh); }}

zbrazëti private btnStop_Click (dërguesi i objektit, EventArgs e)

{if (ProdRunning == true) {timer1. Stop (); ProdRunning = false; UpdateOrderTable (); } else {MessageBox. Show ("Asnjë prodhim nuk ka filluar akoma. Futni të dhënat dhe shtypni butonin 'start'"); }}

zbrazëti private 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 i ri (fut, lidhje); provo {connection. Open (); insertcmd. ExecuteNonQuery (); lidhje. Mbyll (); SasiaProdhuar = 0; } kap (përjashtim përjashtim) {MessageBox. Show (p.sh. Mesazh); }}

privat void timer1_Tick (dërguesi i objektit, EventArgs e)

{CheckTableForNull (); tabela e ngarkesës (); }

zbrazëti private btnShowOrderTable_Click (dërguesi i objektit, EventArgs e)

{if (ProdRunning == false) {Komanda MySqlCommand = MySqlCommand i ri ("SELECT * NGA patedb. ORDER i rregullueshëm nga PIDRSHKRIMI I URDHRUES;", lidhje); provo {MySqlDataAdapter përshtatës = MySqlDataAdapter i ri (); përshtatës. SelectCommand = komandë; DataTable dbdataset = DataTable e re (); përshtatës. Plotësoni (dbdataset); BindingSource bsource = i ri BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; përshtatës. Përditëso (dbdataset); } kap (përjashtim përjashtim) {MessageBox. Show (p.sh. Mesazh); }} else {MessageBox. Show ("Shtypni ndalesën për të parë urdhrin e tryezës"); }}

zbrazëti private btnShowOrderDetails_Click (dërguesi i objektit, 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 +"' "); Komanda MySqlCommand = MySqlCommand i ri (test, lidhje); provo {connection. Open (); Përshtatës MySqlDataAdapter = MySqlDataAdapter i ri (); përshtatës. SelectCommand = komandë; DataTable dbdataset = DataTable e re (); përshtatës. Plotësoni (dbdataset); BindingSource bsource = i ri BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; përshtatës. Përditëso (dbdataset); } kap (përjashtim përjashtim) {MessageBox. Show (p.sh. Mesazh); } lidhje. Mbyll (); } else {MessageBox. Show ("Shtyp ndalesën për të parë detajet e porosisë"); }}

zbrazëti private btnShowCustomerDetails_Click (dërguesi i objektit, 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 +"' "); Komanda MySqlCommand = MySqlCommand i ri (test, lidhje); provo {MySqlDataAdapter përshtatës = MySqlDataAdapter i ri (); përshtatës. SelectCommand = komandë; DataTable dbdataset = DataTable e re (); përshtatës. Plotësoni (dbdataset); BindingSource bsource = i ri BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; përshtatës. Përditëso (dbdataset); } kap (përjashtim përjashtim) {MessageBox. Show (p.sh. Mesazh); }} else {MessageBox. Show ("Shtypni ndalesën për të kuptuar detajet e klientit"); }}}

}

Recommended: