Мазмұны:

EAL-Industri4.0-RFID деректер қоры: 10 қадам (суреттермен)
EAL-Industri4.0-RFID деректер қоры: 10 қадам (суреттермен)

Бейне: EAL-Industri4.0-RFID деректер қоры: 10 қадам (суреттермен)

Бейне: EAL-Industri4.0-RFID деректер қоры: 10 қадам (суреттермен)
Бейне: ProxiTrak RFID IOT 2024, Шілде
Anonim
EAL-Industri4.0-RFID Dataopsamling Til мәліметтер базасы
EAL-Industri4.0-RFID Dataopsamling Til мәліметтер базасы

Жобаның қол жетімділігі анықталуда, тіркеуші анықтауда. MySQL мәліметтер базасы мен RFID деректері артта қалады. түйін-ҚЫЗЫЛ, деректерді өңдеу мен C# бағдарламасы мен Windows Form Application бағдарламасы бойынша жұмыс істейді. Орман қоры:

Өнім өндірушілердің сомасы 200 г мөлшерінде. Қосымша ақпарат RFID -ті және пластикалық кодты қосқанда, жеке кодты идентификатор (UID = бірегей идентификатор, 32 бит код, 8 он алтылық белгі) идентификациялау үшін қажет болады. Деректерді жоюға рұқсат етілмеген жағдайда, олар бір -бірімен тығыз байланыста болады. спецификациялаудың ең жақсы уақыты. Күндізгі супермаркеттер:

1. Ирма. +/- 5%-дан аспайтын мөлшерге дейін, ең аз дегенде 190г және 210г.

2. Брюгсен. Brugsens leverpostej skal holde sigen to +/- 10%, ең аз дегенде 180г және 220г.

3. Алди. Алдын ала жеңілдіктер +/- 15%-ға дейін, ең азы 170г және 230г.

Өңдеу сұраулары:

0 ауқымы: ауқымнан тыс

Диапазон 1: ең аз 190г/максимум 210г

2 ауқымы: минимум 180 г/максимум 220 г

3 ауқымы: ең аз 170 г/максимум 230 г

1 -қадам: UID -те VGg Samt тіркеуі үшін африкалық деректерді қайта қарау

UT UG тіркеуге арналған Samt деректері
UT UG тіркеуге арналған Samt деректері

RFID тегтері мен RFID-RC522 оқырманы/жазушыны тіркеу үшін деректерді тіркеу қажет. Сонымен қатар, сіз деректерді теңшеуге және орнатуға арналған деректерді теңшей аласыз.

Қосымша ақпарат алу:

1 дана потометр 25к желі. Өте жақсы. GND OG +5V, AN0 орталық жүйесі

RFID-RC522 Arduino тақтайшалары SPI портына кіруге мүмкіндік береді:

SDA -> түйреуіш 53

SCK -> pin52

MOSI -> pin51

MISO-> pin50

IRQ -> NC

GND -> GND

RST -> түйреуіш 5

3.3V -> 3.3V

Деректер, hhv үшін. Деректер қоры мен дерекқордың бақылау тақтасы үшін қызыл тораптың қызыл торабы-түйінге дейін енгізілген кезде, сіз портқа кіруге болады.

2-қадам: Arduino бағдарламасы

Мен Arduino бағдарламасын SPI.h және MFRC522.h кітапханашыларына RFID арқылы жіберуге болады. Мен айнымалы мәннің бастапқы бағдарламасын бастадым. MFRC522 бойынша дер кезінде. Мен Setup blokken initialiseres den serielle forbindelse, SPI портфель MFRC522. Derefter RFID тегтерін сканерлейді. Ұмытылмайтын уақытты анықтау үшін UID -ді іздеңіз, ол дереу жаңартылады. Сканер және UID тегтері жоқ, UID файлдарын жүктейді. Ескі дерекқорға арналған UUID жиыны UID сомасы арқылы портқа жіберуге болады. ОлдУИД -ті қолданған кезде, ол UID -ті білмейді. Бұл UID -тің ертегілерінің бірі болып табылады, олар порттың портына кіруге мүмкіндік береді. Аналогтық көрсеткіштер 150-250 дейін. Деректер жіберіледі. OldUID = nyUID сомасы, RFID белгісі мен кодты өшіру керек.. Бағдарламаның функционалдығы мен функционалдығы 2 массивке сәйкес келеді. Қайтару функциясы шындыққа сәйкес келмейді, ал жалған ақпарат жинауға болады.

#қосу

#include // Бұл бағдарлама RFID карталарын RDIF-RC522 оқу/жазу тақтасын пайдаланып сканерлейді. // UID оқылады, аналогты түйреуіш оқылады. 0-1023 аналогтық мәні 150-250 дейін масштабталады. // UID және аналогтық мән сериялық портта үтірмен бөлінген мәтін ретінде 9600, N, 8, 1 арқылы жіберіледі. // Әр UID-ті қатарынан бір рет жіберуге назар аударылды, // жаңа UID болуы керек сол UID қайта жіберуге дейін бар. // Бұл функция массивтерді салыстыру арқылы кодқа енгізіледі: oldUID nyUID array_cmp функциясында (oldUID , nyUID )

constexpr uint8_t RST_PIN = 5;

constexpr uint8_t SS_PIN = 53; int sensorPin = A0; int Мәні = 0; StringValue String = «0000»; байт oldUID [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; } // UID тегімен nyUID жүктеу (байт i = 0; i <mfrc522.uid.size; i ++) {nyUID = mfrc522.uid.uidByte ; } // if oldUID nyUID if (! array_cmp (oldUID, nyUID)) {// UID тегін сериялық портқа жіберу үшін (байт i = 0; i 1000) {Мән = 1000; } Мән = (Мән / 10) + 150; // масштабталған аналогтық мәнді жіберу Serial.print (Value); // жаңа жолды жіберу Serial.println (); // oldUID = nyUID параметрін орнатыңыз (байт z = 0; z <4; z ++) oldUID [z] = nyUID [z]; } // күту 1 секунд кідіріс (1000); }

// 2 массивті салыстыру …

логикалық array_cmp (байт a , байт b ) {bool test = true; // әр элементтің бірдей болуын тексеріңіз. егер біреу ғана болмаса, 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 мәліметтер базасы

Қозғалыс ағыны мен түйін-ҚЫЗЫЛ:

COM4 деректері Arduino тақтасында деректерді өзгертуге мүмкіндік береді. «Бөлу және мән алу» функциялары «Бөлу және UID алу» бөлгіштерінің бір бөлігін және UID -ді қайтарады. Бақылау тақтасы мен диаграмманың ауқымы бойынша жұмыс істеу керек. UID хабарламалар мен хабарламаларды шығарады. Test_sound advarer «Ауқымнан тыс» деген сөзді есте сақтаңыз, оның өлшемі 170 грамнан төмен, салмағы 230 грамнан асады, DVD мен 0 диапазонында.

Бөлу және мәнді алу:

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

temp = {пайдалы жүктеме: (шығыс [1])}; қайтару температурасы;

Бөлу және UID алу:

var output = msg.payload.split («,»);

temp = {пайдалы жүктеме: шығыс [0]}; қайтару температурасы;

test_sound:

var number = parseInt (msg.payload);

if (саны> 230 || саны <170) {newMsg = {пайдалы жүктеме: «Ауқымнан тыс»}; newMsg қайтару; } басқа {newMsg = {жүктеме: «»}; newMsg қайтару; }

Бөлінген жолдар «,» және уақыт белгісі, paidb.patelog дерекқорының UID деректері.

var output = msg.payload.split («,»); // хабарды жүктеуді үтір бойынша массивке бөлу

UIDTag = шығару [0]; // бірінші бөлім бірінші орынға [0] ValueTag = шығару [1]; // екінші бөлік екінші орынға [1]

var m = {

тақырып: «INSERT INTO patedb.patelog (уақыт белгісі, UID, салмақ) VALUES ('»+new Date (). toISOString ()+«', '»+UIDTag+«', '»+ValueTag+«');» }; қайтару м;

MySQL дерекқорының параметрлері келесідей болуы мүмкін:

Жүргізуші: localhost

Порт: 3306

Қолданушы: түбір

Мәліметтер базасы: patedb

4-қадам: Мәліметтер қорының дизайны

Мәліметтер қорының дизайны
Мәліметтер қорының дизайны

Деректер қоры 4 табельші

patelog er dataopsamlingstabellen, tskrives деректері түйін-ҚЫЗЫЛ және C# бағдарламасында

тапсырыс беруші C# бағдарламалық жасақтамасының деректері бойынша тапсырыс берушілердің деректерін сақтайды.

customertable er et kunderegister

C# бағдарламалық жасақталатын диапазонға арналған кестелік кесте.

5 -қадам: Пателог

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

Табылғандар саны 6 -дан жоғары:

pateID (int) автоматты бастапқы кілт.

Уақыт белгісі, UID & жазуды басу (med forskellig max længde)

ауқымы жоқ (C# бағдарламалық жасақтамасы)

orderID жазуы int (тапсырыс идентификаторы C# бағдарламасында)

Түйіндік-ҚЫЗЫЛ тіркеулердің ауқымын реттеуге мүмкіндік береді. rangeNr және тапсырыс идентификаторы NULL режимінде жұмыс істейді, мен C# бағдарламасының бағдарламалық жасақтамасын өшіремін, ал тапсырыс беру диапазоны үшін

6 -қадам: тапсырыс беру

Орындауға болатын
Орындауға болатын

тапсырыс беруші 5 колонер:

orderID (int) деректерді реттеуге болады

orderQuant (орта есеппен) тапсырыс береді

QuantProduction (орта мерзімді) өндірушілердің ұсыныстары бойынша. (C# бағдарламасындағы қиындықтар)

түсініктеме (шағын мәтін).

customerID (int) тапсырыс берушіге тапсырыс береді.

7 -қадам: реттелетін

Реттелетін
Реттелетін

Customerable indeholder 6 kolonner:

customerID (int) бастапқы кілт og auto inc.

аты -жөні, мекен -жайы, телефон, электрондық пошта (varchar) med forskellig max længde

ауқымNr (int)

8 -қадам: өзгермелі

Жаңартылған
Жаңартылған

3 колонер:

rangeNr (int) бастапқы кілт og auto inc.

rangeMin (int)

rangeMax (int)

9 -қадам: C# бағдарламасы

C# бағдарламасы
C# бағдарламасы

Продюсерлер келесі ережелерді сақтайды:

Күндізгі хабарлар, тапсырыс берушілер, бағдарламалық жасақтама C# бағдарламалық жасақтамасы туралы қосымша ақпарат береді (олар сандық жүйеде сандық ақпаратпен қамтамасыз етіледі. Өндіріс басталғаннан кейін басталуы мүмкін). pd et transportbånd) UID және UID кодтары қызыл-қызыл түйінге дейін, сонымен қатар бақылау тақтасындағы деректерді өшіруге мүмкіндік береді. Samtidig skrives timeestamp, UID және vpgg en en ny rkkke and patedb.pategen.patelog. Тізімге кіру диапазоныNR және тапсырыс берушілері NULL бар.

Уақыт пен уақыт аралығын азайту C# бағдарламалық жасақтамасы NULL -ге дейінгі ауқымды бағдарламалар үшін қажет. Ешқандай деректерді жою NULL режимінде емес, ауқымын өзгертуге рұқсат етіледі. Өндіруші мен өндіруші бірде-бір рет тоқтамайды- «тоқтату» керек. Тапсырмалар мен тапсырмаларды орындауға рұқсат етілмейді. Тапсырыс берілмеген кезде, деректер мен кесте деректері кестедегі деректерді жаңарту үшін DataGridview бағдарламасын жаңартуға мүмкіндік береді. тапсырыс беру мүмкін емес, жеке тапсырыстар UID -ді жеке тапсырыспен реттеуге болады.

System. Collections. Generic көмегімен; System. ComponentModel пайдалану; System. Data пайдалану; System. Drawing қолдану; System. Linq пайдалану; System. Text пайдалану; System. Threading. Tasks пайдалану; System. Windows. Forms пайдалану; MySql. Data. MySqlClient пайдалану;

аттар кеңістігі show_data_from_database

{жалпыға ортақ сынып Form1: Form {MySqlConnection қосылымы = жаңа MySqlConnection («деректер көзі = localhost; пайдаланушы аты = тамыр; пароль = ''»); int RowNumber = 0; // pateID мәнін сақтау үшін айнымалы int RangeNumber = 0; // int салмағы = 0 сандық санды сақтау үшін айнымалы. // int OrderNr = 0 салмағын сақтау үшін айнымалы; // OrderNR int QuantProduced сақтауға арналған айнымалы = 0; // Өндірілген санын сақтау үшін айнымалы int NumberOfRows = 0; // бос жолдар саны.. bool ProdRunning = false; // Іске қосу мен тоқтату түймелерінің қосылғанын көрсететін айнымалы int limit = new int [6]; // int CustomerID массивін инициализациялау; // CustomID жалпыға ортақ Form1 () {InitializeComponent () сақтау үшін айнымалы; load_table (); // қоңырау load_table}

void load_table ()

{MySqlCommand пәрмені = жаңа MySqlCommand («SELECT * FROM patedb.patelog ORDER BY уақыт белгісі DESC;», байланыс); көріңіз {MySqlDataAdapter адаптері = жаңа MySqlDataAdapter (); adapter. SelectCommand = командасы; DataTable dbdataset = жаңа DataTable (); адаптер. Толтыру (dbdataset); BindingSource bsource = жаңа BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adapter. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (ex. Message); }}

жеке жарамсыз SetRowOrder ()

{dataGridView1. Columns [«pateID»]. DisplayIndex = 0; // Оның мәліметтері dataGridView1. Columns [«уақыт белгісі»]. DisplayIndex = 1; // DataGridView1. Columns [«UID»]. // Оның деректері DataGridView1. Columns [«weight»]. DisplayIndex = 3; // Оның деректері DataGridView1. Columns [«rangeNr»] параметрін көрсетеді. DisplayIndex = 4; // Оның деректері DataGridView1. Columns [«orderID»] үшін маңызды. DisplayIndex = 5; // Ол каннонер Андрес}

private void GetData_Click (объект жіберуші, EventArgs e) // Дерекқор кестесі мен уақыт белгісі бойынша тапсырыстарды оқиды

{load_table (); }

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 (); adapter. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (ex. Message); }}

btnRefreshValue_Click жеке жарамсыздығы (объект жіберуші, EventArgs e)

{string weightSort = «SELECT * FROM patedb.patelog ORDER BST CAST (салмағы ҚОЛ ҚОСЫЛҒАН БҮТІН);»; MySqlCommand пәрмені = жаңа MySqlCommand (weightSort, байланыс); көріңіз {MySqlDataAdapter адаптері = жаңа MySqlDataAdapter (); adapter. SelectCommand = командасы; DataTable dbdataset = жаңа DataTable (); адаптер. Толтыру (dbdataset); BindingSource bsource = жаңа BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adapter. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (ex. Message); }}

жеке жарамсыздық ChkNullBtn_Click (объект жіберуші, EventArgs e)

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

жеке жарамсыздық CheckTableForNull ()

{// Таймераралық интервалды тексеріңіз/орнатыңыз 100 мс int i; int. TryParse (textTimer1. Text, i сыртында); if (i <100) {timer1. Stop (); i = 100; таймер1. Аралық = i; MessageBox. Show («Минималды мән i 100mS»); таймер 1. Бастау (); } басқа {таймер1.аралық = i; } textTimer1. Text = timer1. Interval. ToString (); // Кестеде бос жолдар бар екенін тексеріңіз, айнымалы жолдар санын қайтарады: NumberOfRows жолы weightStr = «»; string chkNull = «COUNT (*) FROM patedb.patelog WHERE диапазонында nate нөлдік тапсырыс бойынша pateID LIMIT 1;»; MySqlCommand пәрмені = жаңа MySqlCommand (chkNull, байланыс); {connection. Open () көріңіз; NumberOfRows = Convert. ToInt32 (command. ExecuteScalar ()); қосылу. Close (); } catch (Exception ex) {MessageBox. Show (ex. Message); } ақырында {if (NumberOfRows! = 0) {try {// диапазон NR NULL жолағы болатын ең төменгі pateID нөмірін таңдайды readID = «pateID ASC LIMIT 1 арқылы nN NULL ORDER IS WHITE pateb.patelog SELECT pateID;»; MySqlCommand cmdID = жаңа MySqlCommand (readID, байланыс); {connection. 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 (оқу салмағы, байланыс); {connection. Open (); weightStr = (жол) cmdweight. ExecuteScalar (); // Жол !! қосылу. Close (); } салмақ = int. Parse (weightStr); // int txtWeight. Text = weight. ToString () түрлендіру; // print int RangeNumber = 0; if (weight> = limit [0] && weight = limits [2] && weight = limits [4] && weight <= limit [5]) {RangeNumber = 3; }} txtRange. Text = RangeNumber. ToString (); UpdateLog (); } catch (Exception ex) {MessageBox. Show (ex. Message); } QuantProduced = QuantProduced + 1; }}} жеке жарамсыздық 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 (тест, байланыс); {connection. Open (); valtest = Convert. ToInt32 (cmdtestcustomer. ExecuteScalar ()); // егер тұтынушыда байланыс болмаса, 0 қайтарады. Close (); } if (valtest == 1) // егер тұтынушы дерекқорда болса - өндірісті бастаңыз {try {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, қосылым); {connection. Open (); шектер [counter] = (int) cmdmin. ExecuteScalar (); санауыш = есептегіш + 1; қосылу. Close (); } // MessageBox. Show (counter. ToString ()); жол readmax = «SELECT rangeMax FROM patedb.rangetable WHERE rangeNr =» + rangeNr; MySqlCommand cmdmax = жаңа MySqlCommand (readmax, байланыс); {connection. Open (); шектер [counter] = (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 (); } catch (Exception ex) {MessageBox. Show (ex. Message); }}

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; } catch (Exception ex) {MessageBox. Show (ex. Message); }}

private void timer1_Tick (объект жіберуші, EventArgs e)

{CheckTableForNull (); load_table (); }

btnShowOrderTable_Click жеке жарамсыздығы (объект жіберуші, EventArgs e)

{if (ProdRunning == false) {MySqlCommand пәрмені = жаңа MySqlCommand («SELECT * FROM patedb.ordertable ORDER BY orderID DESC;», байланыс); көріңіз {MySqlDataAdapter адаптері = жаңа MySqlDataAdapter (); adapter. SelectCommand = командасы; DataTable dbdataset = жаңа DataTable (); адаптер. Толтыру (dbdataset); BindingSource bsource = жаңа BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapter. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (ex. Message); }} else {MessageBox. Show («StopThis to wie 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 (); adapter. SelectCommand = командасы; DataTable dbdataset = жаңа DataTable (); адаптер. Толтыру (dbdataset); BindingSource bsource = жаңа BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapter. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (ex. Message); } connection. Close (); } else {MessageBox. Show («Тапсырыс мәліметтерін көру үшін аялдаманы басыңыз»); }}

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 (); adapter. SelectCommand = командасы; DataTable dbdataset = жаңа DataTable (); адаптер. Толтыру (dbdataset); BindingSource bsource = жаңа BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adapter. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (ex. Message); }} else {MessageBox. Show («Тұтынушы туралы мәлімет алу үшін тоқтауды басыңыз»); }}}

}

Ұсынылған: