Turinys:
- 1 veiksmas: „Af“duomenų registravimas naudojant „Vægt Samt“registruojant Af UID
- 2 žingsnis: „Arduino“programa
- 3 žingsnis: „Node-RED“, „Lagring Af Data I“duomenų bazė
- 4 žingsnis: duomenų bazės kūrimas
- 5 žingsnis: „Patelog“
- 6 žingsnis: užsakomas
- 7 žingsnis: pritaikymas
- 8 žingsnis: diapazonas
- 9 žingsnis: C# programa
Video: EAL-Industri4.0-RFID duomenų rinkimo duomenų bazė: 10 žingsnių (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Dette projekt omhandler opsamling af vægtdata, registration of af ideniteter vha. RFID, bauginantys duomenys ir „MySQL“duomenų bazė. mazgas-RED, samt fremvisning og behandling af of opsamlede data i et C# program i form of en Windows Form Application. Pagal miško žvalgytoją:
Vi har en produktionslinje som produrer leverpostej i 200g foliebakker. Visi išradimai ir paspaudimai naudojant RFID žymes ir plastikinius gaminius/lipdukus, som indeholder et unikt ID (UID = Unique Identifier, er en 32 bits kode, 8 hexadecimale karakterer), skirtas identifikuoti, jei reikia. 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 specificikt krav færdigvægten, bruges UID tagget til at knytte hver enkelt leverpostej til en specific lagerlok, leverpostejer til aš specificik kunde. Prekybos centras:
1. Irma. Vægten på Irmas luksus leverpostej skal holde sig inden for +/- 5%, altså minimum 190g og maksimum 210g.
2. Brugsenas. Sumažinkite „Brugsens“sverpostej skal holde sig inden +/- 10%, ne mažiau kaip 180 g ir ne daugiau kaip 220 g.
3. Aldi. Vægten på Aldis nuolaida sverpostej skal holde sig inden +/- 15%, ne mažiau kaip 170 g ir ne daugiau kaip 230 g.
Der er således følgende sorteringer:
Diapazonas 0: už diapazono ribų
1 diapazonas: mažiausiai 190 g/maksimalus 210 g
2 diapazonas: mažiausiai 180 g/maksimalus 220 g
3 diapazonas: mažiausiai 170 g/maksimalus 230 g
1 veiksmas: „Af“duomenų registravimas naudojant „Vægt Samt“registruojant Af UID
Til opsamings af data for vægt, its registering on RFID tags on anvendt ir Arduino MEGA2560 su en RFID-RC522 skaitytuvas/rašytojas. Da vi ikke har nogen vægt, simulerer vi data for vægten med et potmeter tilsluttet en analog indgang på Arduinoen.
Populiariausias variantas:
1 stk potmeter 25k lineært. Yder-benene er tilsluttet hhv. GND og +5V, vidurinis tinklas arba tilsluttet AN0
RFID-RC522 arba „Arduino“plokštės SPI prievadas, skirtas šiai legendai:
SDA -> 53 kaištis
SCK -> kaištis52
MOSI -> pin51
MISO-> pin50
IRQ -> NC
GND -> GND
RST -> kaištis5
3.3V -> 3.3V
Išsamūs duomenys, skirti hhv. UID ir leidimai, siunčiami iš serijinio prievado prie kom ir atskiro teksto teksto viduryje iki mazgo-Red som står for den efterfølgende præsentation on et dashboard and laring in en database.
2 žingsnis: „Arduino“programa
I „Arduino“programuoja rašalą į bibliotekos SPI.h ir MFRC522.h, skirtą RFID radijo bangoms. Aš pradedu nuo programuojamo inicializavimo kintamojo. Der laves in instans af MFRC522. I sąrankos blokų inicijavimas, draudžiantis seriją, SPI porten og MFRC522. Atlikti nuskaitymą po RFID žymių. Dėl ikke at sende det samme UID afsted flere gange efter hinanden, er der lavet en stump kode som tjekker for dette. Naudojant nuskaitymo tinklą ir UID žymę, bet kuriuo atveju yra užrakintas nyUID ir neto tinkamiausias UID. „Hvis array nyUID“- tai senų UID klaidų istorija, kuri dabar yra UID, kai jie siunčia serijos prievadą. „Hvis nyUID“ir „oldUID“yra skirtingi, jie pasakoja apie vieną UID žymą ir UID'et skal ignoruoja. Išsami informacija apie UID, siunčiama UID'et på den serielle port sammen med en læst værdi fra den serielle port. Panašiai žiūrėkite skaleres iki området 150-250. Duomenys siunčiami som en komma-separeret tekststreng. Išsami informacija apie senus UID = nyUID, kodai ir kodų klavišai, taip pat ir RFID žyma. Išskirkite funkcijų programą, skirtą funkcijoms, skirtoms 2 masyvams. Funkcijos grąžinimo tiesa hvis array'ne er ens, o false hvis array'ne er forskellige.
#įtraukti
#include // Ši programa nuskaito RFID korteles naudodami RDIF-RC522 skaitymo/rašymo plokštę. // Skaitomas UID, skaitomas analoginis kaištis. Analoginė vertė 0-1023 padidinama iki 150-250. // UID ir analoginė reikšmė siunčiama kaip kableliais atskirtas tekstas nuosekliajame prievade naudojant 9600, N, 8, 1. // Buvo pasirūpinta, kad kiekvienas UID būtų siunčiamas tik vieną kartą iš eilės, // naujas UID turi būti esantį prieš tai, kai tas pats UID gali būti išsiųstas dar kartą. // Ši funkcija įgyvendinama kode, lyginant masyvus: oldUID nyUID funkcijoje array_cmp (oldUID , nyUID )
constexpr uint8_t RST_PIN = 5;
constexpr uint8_t SS_PIN = 53; int sensorPin = A0; int Reikšmė = 0; Styga StringValue = "0000"; baitas oldUID [4] = {}; baitas nyUID [4] = {};
MFRC522 mfrc522 (SS_PIN, RST_PIN); // Sukurti MFRC522 egzempliorių.
negaliojanti sąranka ()
{Serial.begin (9600); // Inicijuoti serijinį ryšį SPI.begin (); // Inicijuoti SPI magistralę mfrc522. PCD_Init (); // Inicijuoti MFRC522}
tuštumos kilpa ()
{// Ieškokite naujų kortelių, jei (! Mfrc522. PICC_IsNewCardPresent ()) {return; } // Pasirinkite vieną iš kortelių, jei (! Mfrc522. PICC_ReadCardSerial ()) {return; } // įkelti nyUID su UID žyma (baitas i = 0; i <mfrc522.uid.size; i ++) {nyUID = mfrc522.uid.uidByte ; } // jei oldUID nyUID if (! array_cmp (oldUID, nyUID)) {// siųsti UID žymą nuosekliajame prievade (baitas i = 0; i 1000) {Value = 1000; } Vertė = (vertė / 10) + 150; // siųsti mastelio analoginę reikšmę Serial.print (Value); // siųsti naują eilutę Serial.println (); // nustatyti oldUID = nyUID (baitui z = 0; z <4; z ++) oldUID [z] = nyUID [z]; } // palaukti 1 sek. delsą (1000); }
// palygink 2 masyvus …
loginis masyvas_cmp (baitas a , baitas b ) {bool test = true; // patikrinkite, ar kiekvienas elementas yra tas pats. jei tik vienas nėra, grąžinkite klaidą (baitas n = 0; n <4; n ++) {if (a [n]! = b [n]) test = false; // jei baitas nelygus, test = false} if (test == true) return true; else return false; }
3 žingsnis: „Node-RED“, „Lagring Af Data I“duomenų bazė
Pagrindinis srautas su raudonu mazgu:
COM4 yra draudžiamas duomenų perdavimas iš „Arduino“plokštės. Funkcijos „Split and Get value“ir „Split and Get UID“skirstytuvo tekstai yra komentuojami ir grąžinami. Nustatykite brėžinius iki fremvisning på prietaisų skydelio ir linijinės schemos bei masto. UID dažniai ir tekstas. Funkcijos test_sound advarer verbalt med sætningen "Out of range", hvis vægten er under 170g eller over 230g, dvs i range 0.
Padalinkite ir gaukite vertę:
var išvestis = msg.payload.split (',');
temp = {naudingoji apkrova: (išvestis [1])}; grąžinimo temperatūra;
Padalinti ir gauti UID:
var išvestis = msg.payload.split (",");
temp = {naudingoji apkrova: išvestis [0]}; grąžinimo temperatūra;
test_sound:
var numeris = parseInt (msg.payload);
if (skaičius> 230 || skaičius <170) {newMsg = {naudingoji apkrova: "Už diapazono ribų"}; return newMsg; } else {newMsg = {payload: ""}; return newMsg; }
Funkcijos Split string "," indsætter et timestamp, UID og vægten and en database patedb.patelog.
var išvestis = msg.payload.split (","); // padalinti žinutes.payload kableliu į masyvą
UIDTag = išėjimas [0]; // pirmoji dalis į pirmą poziciją [0] ValueTag = output [1]; // antra dalis į antrą poziciją [1]
var m = {
tema: "INSERT INTO patedb.patelog (laiko žymė, UID, svoris) VALUES ('"+nauja data (). toISOString ()+"', '"+UIDTag+"', '"+ValueTag+"');" }; grąžinti m;
patelog er lt MySQL duomenų bazė uždraudė som er sat op med følgende parametrą:
Šeimininkas: localhost
Uostas: 3306
Vartotojas: root
Duomenų bazė: patedb
4 žingsnis: duomenų bazės kūrimas
Databasen patedb indeholder 4 tabeller
patelog duomenų bazėje, perkelia duomenis į mazgą-RED ir C# programą
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 žingsnis: „Patelog“
Tabellen patelog indeholder folgende 6 kolonner:
pateID (int) yra pagrindinis raktas ir automatinis spausdinimas.
Laiko žyma, UID ir jos tipas varchar (med forskellig max længde)
diapazonasNr er af typen tinyint (beregnes ir tilføjes af 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 žemės dirbimo mašina NULL værdier, det bruges i C# programmet til and detektere de rækker som skal tilskrives værdier for rangeNr og orderID
6 žingsnis: užsakomas
ordertable indeholder 5 kolonner:
orderID (int) er det aktuale ordrenummer
orderQuant (mediumint) er ordens pålydende antal
quantProduced (mediumint) er antal der rent faktisk er produret på ordren. (Tælles af C# programmet)
komentaras (tinytext) er en eventuel kommentar til ordren.
customerID (int) er det aktuale kundenummer på ordren.
7 žingsnis: pritaikymas
customertable indeholder 6 kolonner:
customerID (int) er pirminis raktas ir auto inc.
vardas, adresas, telefonas, el. paštas (varchar) med forskellig max længde
diapazonasNr (int)
8 žingsnis: diapazonas
„rangetable indeholder 3 kolonner“:
rangeNr (int) er pirminis raktas ir auto inc.
diapazonasMin (int)
rangeMax (int)
9 žingsnis: C# programa
Når der produres en ordre leverpostej, er Procedur følgende:
Kundenummer, ordrenummer, ordreantal and en eventuel kommentar indtastes i C# programmet (i Practice overføres det digitalt from virksomhedens ordresystem. Produktionen startes nu ved tryk på 'start'- knappen. Når en leverpostej er færdigproduceret og låget er den monte) på et transportbånd) Samhørende Værdier af UID ir den aktuelle vægt siunčia serijà iki mazgo-RED, kai visi mato de opsamlede data på dashboard 'et. Samtidig skrives timestamp, UID og vægt i en ny række i patedb.patelog tabellen. Da der på nuv. tidspunkt ikke tilskrives værdier til rangeNr og orderID vil de have værdien NULL.
Med ir laikmačio intervalas C# programuoja patedb.patelogtabellen, skirtą naujam laikui, 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 productionret, afsluttes ordren ved tryk på”stop”- knappen. Når ordren afsluttes, tilføjes en række til patedb.ordertable med de aktuelle ordredata. Jei norite, kad būtų siunčiama informacija, galite gauti duomenų ir patelogo lentelių fremvises ved and trykke på de forskellige knapper i gruppen Update DataGridview. ordertable kan også vises, og der kan søges ordredata på individualeller UID'er eller kundedata på individualelle ordrer.
naudojant sistemą; naudojant System. Collections. Generic; naudojant System. ComponentModel; naudojant System. Data; naudojant „System. Drawing“; naudojant System. Linq; naudojant System. Text; naudojant System. Threading. Tasks; naudojant System. Windows. Forms; naudojant MySql. Data. MySqlClient;
vardų sritis show_data_from_database
{viešoji dalinė klasė Form1: Forma {MySqlConnection connection = new MySqlConnection ("datasource = localhost; username = root; password = ''"); int Eilutės numeris = 0; // Kintamasis, skirtas pašteto ID vertei saugoti int RangeNumber = 0; // Kintamasis, skirtas rangenumber saugojimui int weight = 0; // Kintamasis svoriui saugoti int OrderNr = 0; // OrderNR kintamasis int QuantProduced = 0; // Kintamasis, skirtas saugoti pagamintam kiekiui int NumberOfRows = 0; // eilučių su nuliais skaičius.. bool ProdRunning = false; // Kintamasis, nurodantis, ar įjungimo ir sustabdymo mygtukai buvo suaktyvinti int limit = new int [6]; // inicijuoti masyvą int CustomerID; // kintamasis, skirtas kliento ID viešai formai saugoti1 () {InitializeComponent (); load_table (); // call load_table}
void load_table ()
{MySqlCommand komanda = naujas MySqlCommand ("SELECT * FROM patedb.patelog ORDER BY timestamp DESC;", connection); pabandykite {MySqlDataAdapter adapter = new MySqlDataAdapter (); adapteris. SelectCommand = komanda; DataTable dbdataset = new DataTable (); adapter. Fill (dbdataset); BindingSource bsource = naujas BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adapteris. Atnaujinti (dbdataset); } sugauti (išimtis, pvz.) {MessageBox. Show (pvz., pranešimas); }}
private void SetRowOrder ()
{dataGridView1. Columns ["pateID"]. DisplayIndex = 0; // Jos kan rækkefølgen af kolonner ændres dataGridView1. Columns ["timestamp"]. DisplayIndex = 1; // Jos kan rækkefølgen af kolonner ændres dataGridView1. Columns ["UID"]. DisplayIndex = 2; // Jos kan rækkefølgen af kolonner ændres dataGridView1. Columns ["weight"]. DisplayIndex = 3; // Jos kan rækkefølgen af kolonner ændres dataGridView1. Columns ["rangeNr"]. DisplayIndex = 4; // Jos kan rækkefølgen af kolonner ændres dataGridView1. Columns ["orderID"]. DisplayIndex = 5; // Her kan rækkefølgen af kolonner ændres}
private void GetData_Click (objekto siuntėjas, „EventArgs e“) // Skaito duomenų bazės lentelę ir užsakymus pagal laiko žymę
{load_table (); }
private void btnRefreshUID_Click (objekto siuntėjas, „EventArgs e“) //
{string timeStr = "SELECT * FROM patedb.patelog ORDER BY UID;"; MySqlCommand komanda = new MySqlCommand (timeStr, connection); pabandykite {MySqlDataAdapter adapter = new MySqlDataAdapter (); adapteris. SelectCommand = komanda; DataTable dbdataset = new DataTable (); adapter. Fill (dbdataset); BindingSource bsource = naujas BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adapteris. Atnaujinti (dbdataset); } sugauti (išimtis, pvz.) {MessageBox. Show (pvz., pranešimas); }}
private void btnRefreshValue_Click (objekto siuntėjas, „EventArgs e“)
{string weightSort = "SELECT * FROM patedb.patelog UŽSAKYTI PAGAL CAST (svoris, PASIRAŠYTAS INTEGERIS);"; MySqlCommand komanda = new MySqlCommand (weightSort, connection); pabandykite {MySqlDataAdapter adapter = new MySqlDataAdapter (); adapteris. SelectCommand = komanda; DataTable dbdataset = new DataTable (); adapter. Fill (dbdataset); BindingSource bsource = naujas BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adapteris. Atnaujinti (dbdataset); } sugauti (išimtis, pvz.) {MessageBox. Show (pvz., pranešimas); }}
private void ChkNullBtn_Click (objekto siuntėjas, „EventArgs e“)
{if (ProdRunning) {CheckTableForNull (); load_table (); }}
private void CheckTableForNull ()
{// Tikrinti/nustatyti laikmačio intervalą mažiausiai 100 ms int i; int. TryParse (textTimer1. Text, out i); if (i <100) {timer1. Stop (); i = 100; laikmatis1. Intervalas = i; MessageBox. Show ("Minimali vertė i 100mS"); laikmatis1. Pradėti (); } else {timer1. Intervalas = i; } textTimer1. Text = timer1. Interval. ToString (); // Patikrinkite, ar lentelėje yra eilučių su nuliu, grąžina kintamojo eilučių skaičių: NumberOfRows string weightStr = ""; string chkNull = "SELECT COUNT (*) FROM patedb.patelog WHERE rangeNR NULL ORDER BET pateid LIMIT 1;"; MySqlCommand komanda = new MySqlCommand (chkNull, connection); pabandykite {connection. Open (); NumberOfRows = Convert. ToInt32 (command. ExecuteScalar ()); jungtis. Uždaryti (); } sugauti (išimtis, pvz.) {MessageBox. Show (pvz., pranešimas); } pagaliau {if (NumberOfRows! = 0) {try {// Parenka mažiausią pateID numerį, kur rangeNr yra NULL string readID = "SELECT pateID FROM patedb.patelog WHERE rangeNR NULL ORDER BY patehet ASC LIMIT 1;"; MySqlCommand cmdID = naujas MySqlCommand (readID, ryšys); {connection. Open (); Eilutės numeris = (int) cmdID. ExecuteScalar (); // sveikas skaičius !! jungtis. Uždaryti (); } listPateID. Text = RowNumber. ToString (); // perskaityti pasirinktą PateID numerį // Parenka svorį iš pasirinktos eilės numerio eilutės eilutės = RowNumber. ToString (); string readweight = "SELECT weight FROM patedb.patelog WHERE pateID =" + eilutė; „MySqlCommand“cmdweight = naujas „MySqlCommand“(skaitymo svoris, ryšys); {connection. Open (); weightStr = (eilutė) cmdweight. ExecuteScalar (); // Styga !! jungtis. Uždaryti (); } svoris = int. Parse (weightStr); // konvertuoti į int txtWeight. Text = svoris. ToString (); // spausdinti int RangeNumber = 0; if (svoris> = ribos [0] && svoris = ribos [2] && svoris = ribos [4] && svoris <= ribos [5]) {RangeNumber = 3; }} txtRange. Text = RangeNumber. ToString (); UpdateLog (); } sugauti (išimtis, pvz.) {MessageBox. Show (pvz., pranešimas); } QuantProduced = QuantProduced + 1; }}} private void btnStart_Click (objekto siuntėjas, EventArgs e) {if (ProdRunning == false) {int valtest; pabandykite {CustomerID = int. Parse (txtCustomerNr. Text); // skaityti customerID} catch {MessageBox. Show ("Įveskite gamybos duomenis ir paspauskite mygtuką" pradėti "."); }
string test = "SELECT COUNT (*) FROM patedb.customertable WHERE customerID ="+kliento ID;
MySqlCommand cmdtestcustomer = naujas MySqlCommand (testas, ryšys); {connection. Open (); valtest = Convert. ToInt32 (cmdtestcustomer. ExecuteScalar ()); // grąžina 0, jei klientui nėra ryšio. Uždaryti (); } if (valtest == 1) // jei klientas yra duomenų bazėje - pradėkite gamybą {try {OrderNr = int. Parse (txtOrderNumber. Text); ProdRunning = tiesa; laikmatis1. Pradėti (); textTimer1. Text = timer1. Interval. ToString (); „ReadLimits“(); } catch (Exception ex) {MessageBox. Show ("Įveskite gamybos duomenis ir paspauskite mygtuką" Pradėti "."); }} else MessageBox. Show ("Kliento nėra duomenų bazėje, bandykite dar kartą"); } // ReadLimits (); }
private void ReadLimits ()
{// Skaito ribas nuo diapazono lentelės, diapazonas nuo 1 iki 3 int counter = 0; for (int rangeNr = 1; rangeNr <4; rangeNr ++) {string readmin = "SELECT rangeMin FROM patedb.rangetable WHERE rangeNr ="+rangeNr; MySqlCommand cmdmin = naujas MySqlCommand (readmin, ryšys); {connection. Open (); ribos [skaitiklis] = (int) cmdmin. ExecuteScalar (); skaitiklis = skaitiklis + 1; jungtis. Uždaryti (); } // MessageBox. Show (counter. ToString ()); string readmax = "SELECT rangeMax FROM patedb.rangetable WHERE rangeNr =" + rangeNr; MySqlCommand cmdmax = naujas MySqlCommand (readmax, ryšys); {connection. Open (); ribos [skaitiklis] = (int) cmdmax. ExecuteScalar (); skaitiklis = skaitiklis + 1; jungtis. Uždaryti (); }} // pabaiga ciklui}
private void UpdateLog ()
{// UPDATE rangeNR & orderID string Range = RangeNumber. ToString (); eilutė Užsakymas = UžsakymoNr. ToString (); string update = "UPDATE patedb.patelog SET rangeNr ="+Range+','+"orderID ="+OrderNr+"WHERE pateID ="+RowNumber; MySqlCommand updatecmd = naujas MySqlCommand (atnaujinimas, ryšys); pabandykite {connection. Open (); updatecmd. ExecuteNonQuery (); jungtis. Uždaryti (); } sugauti (išimtis, pvz.) {MessageBox. Show (pvz., pranešimas); }}
private void btnStop_Click (objekto siuntėjas, „EventArgs e“)
{if (ProdRunning == true) {timer1. Stop (); ProdRunning = klaidinga; UpdateOrderTable (); } else {MessageBox. Show ("Gamyba dar nepradėta. Įveskite duomenis ir paspauskite mygtuką" Pradėti "); }}
private void 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 = naujas MySqlCommand (įterpti, prijungti); pabandykite {connection. Open (); insertcmd. ExecuteNonQuery (); jungtis. Uždaryti (); „QuantProduced“= 0; } sugauti (išimtis, pvz.) {MessageBox. Show (pvz., pranešimas); }}
private void timer1_Tick (objekto siuntėjas, „EventArgs e“)
{CheckTableForNull (); load_table (); }
private void btnShowOrderTable_Click (objekto siuntėjas, „EventArgs e“)
{if (ProdRunning == false) {MySqlCommand command = new MySqlCommand ("SELECT * FROM patedb.ordertable ORDER BY orderID DESC;", ryšys); pabandykite {MySqlDataAdapter adapter = new MySqlDataAdapter (); adapteris. SelectCommand = komanda; DataTable dbdataset = new DataTable (); adapter. Fill (dbdataset); BindingSource bsource = naujas BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapteris. Atnaujinti (dbdataset); } sugauti (išimtis, pvz.) {MessageBox. Show (pvz., pranešimas); }} else {MessageBox. Show ("Paspauskite stop, kad surastumėte orderTable"); }}
private void btnShowOrderDetails_Click (objekto siuntėjas, „EventArgs e“)
{if (ProdRunning == false) {string test = ("SELECT patedb.ordertable.orderID, orderQuant, quantProduced, komentuoti, kliento ID iš patedb.ordertable INNER JOIN patedb.patelog ON patedb.patelog.orderID = patedb.ordertable.orderID WHERE patedb.patelog. UID = '" + txtShowOrderDetails. Text +" ""); MySqlCommand komanda = new MySqlCommand (test, connection); pabandykite {connection. Open (); MySqlDataAdapter adapteris = naujas MySqlDataAdapter (); adapteris. SelectCommand = komanda; DataTable dbdataset = new DataTable (); adapter. Fill (dbdataset); BindingSource bsource = naujas BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapteris. Atnaujinti (dbdataset); } sugauti (išimtis, pvz.) {MessageBox. Show (pvz., pranešimas); } jungtis. Uždaryti (); } else {MessageBox. Show ("Paspauskite sustabdyti, kad peržiūrėtumėte išsamią užsakymo informaciją"); }}
private void btnShowCustomerDetails_Click (objekto siuntėjas, „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. kliento ID WHERE patedb.ordertable.orderID = '" + txtShowCustomerDetails. Text +" ""); MySqlCommand komanda = new MySqlCommand (test, connection); pabandykite {MySqlDataAdapter adapter = new MySqlDataAdapter (); adapteris. SelectCommand = komanda; DataTable dbdataset = new DataTable (); adapter. Fill (dbdataset); BindingSource bsource = naujas BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapteris. Atnaujinti (dbdataset); } sugauti (išimtis, pvz.) {MessageBox. Show (pvz., pranešimas); }} else {MessageBox. Show ("Paspauskite stop, kad sužinotumėte išsamią klientų informaciją"); }}}
}
Rekomenduojamas:
Kaip padaryti drėgmės ir temperatūros realaus laiko duomenų įrašymo įrenginį naudojant „Arduino UNO“ir SD kortelę - DHT11 duomenų kaupiklio modeliavimas „Proteus“: 5 žingsniai
Kaip padaryti drėgmės ir temperatūros realaus laiko duomenų įrašymo įrenginį naudojant „Arduino UNO“ir SD kortelę | DHT11 duomenų kaupiklio modeliavimas „Proteus“: Įvadas: Sveiki, tai „Liono Maker“, čia yra „YouTube“nuoroda. Mes kuriame kūrybinį projektą su „Arduino“ir dirbame prie įterptųjų sistemų
Senovinis rotacinis telefono rinkimo kompiuterio garsumo valdymas: 7 žingsniai (su nuotraukomis)
„Vintage Rotary Phone Dial PC“garsumo valdymas: jei esate kažkas panašaus į mane, pastebite, kad gana dažnai keičiate kompiuterio garsumą. Kai kurie vaizdo įrašai yra garsesni už kitus, kartais norite, kad garsas jūsų kompiuteryje būtų išjungtas, kai klausotės transliacijų ar muzikos, ir gali tekti nutraukti
Duomenų rinkimo ir duomenų vizualizavimo sistema „MotoStudent“lenktyniniam dviračiui: 23 žingsniai
„MotoStudent“elektrinio lenktyninio dviračio duomenų rinkimo ir duomenų vizualizavimo sistema: Duomenų surinkimo sistema yra techninės ir programinės įrangos, veikiančios kartu, rinkinys, siekiant surinkti duomenis iš išorinių jutiklių, po to juos saugoti ir apdoroti, kad būtų galima vizualizuoti grafiškai ir analizuoti, leidžia inžinieriams padaryti
„Cambus“- duomenų rinkimo miesto autobusuose sistema: 8 žingsniai
„Cambus“- miesto autobusų duomenų rinkimo sistema. Tarp problemų ir sunkumų, žinomų viešajame transporte, gyventojams trūksta informacijos realiuoju laiku ir jie yra mažiausiai įtikinami. Perpildytas viešojo transporto autobusų atstumia vartotojus, kurie nori naudotis savo transporto priemonėmis, net
„IoT“įgalintas jutiklių duomenų rinkimo centras su ESP8266 ir „PubNub“: 9 žingsniai (su paveikslėliais)
„IoT“įjungtas jutiklių duomenų rinkimo centras su „ESP8266“ir „PubNub“: dauguma ESP8266 vadovėlių yra naujoko lygmenyje (nuotoliniu būdu mirksi LED) arba yra pernelyg sudėtingi tiems, kurie nori ką nors patobulinti ir atnaujinti, vadovaudamiesi mirksėjimo įgūdžiais. Tai pamokomas tikslas užpildyti šią spragą iki kūrinių