Obsah:

EAL-Industri4.0-RFID Dataopsamling do databázy: 10 krokov (s obrázkami)
EAL-Industri4.0-RFID Dataopsamling do databázy: 10 krokov (s obrázkami)

Video: EAL-Industri4.0-RFID Dataopsamling do databázy: 10 krokov (s obrázkami)

Video: EAL-Industri4.0-RFID Dataopsamling do databázy: 10 krokov (s obrázkami)
Video: Промышленная автоматизация, Индустрия 40 и «умные» заводы 2024, November
Anonim
EAL-Industri4.0-RFID Dataopsamling do databázy
EAL-Industri4.0-RFID Dataopsamling do databázy

Dette projekt omhandler opsamling af vægtdata, registrating af identiteter vha. RFID, zaznamenávanie údajov v databáze MySQL vha. uzol-ČERVENÝ, prehľadávajúci a manipulujúci s odoslanými dátami a programom C# z aplikácie Windows Form Application. Naše rady:

Vieme viac o výrobkoch, ako aj o 200g fóliách. Všetky typy súborov, ktoré sú k dispozícii po odoslaní, jsou dodávány se štítky RFID a plastovými/etiketami, bez samostatného ID a uniktového ID (UID = Unikátny identifikátor, 32 bitových kódov, 8 hexadecimálnych znakov) pre identifikáciu všetkých dát, ktoré sú uložené v páse. Viac informácií nájdete v hlavnom stĺpci (ďalej len priemer, priemer mm), og da kunderne hver har et specifikt krav færdigvægten, bruges UID tagget til at knytte hver enkelt leverplate to t la en specifik la leverpostejer til én specifik kunde. Kunderne er supermarkedskæder:

1. Irma. Váha je +/- 5%, minimálna hmotnosť 190g a minimálna hmotnosť 210g.

2. Brugsen. Váha sa líši od +/- 10%, pričom minimálna hmotnosť je 180 g a hmotnosť je 220 g.

3. Aldi. Viac na zľavu Aldis môžete získať +/- 15%, minimálne 170 g a maximálne 230 g.

Der er således følgende sorteringer:

Rozsah0: mimo rozsah

Rozsah 1: minimálne 190 g/maximálne 210 g

Rozsah 2: minimálne 180 g/maximálne 220 g

Rozsah 3: minimálne 170 g/maximálne 230 g

Krok 1: Opsamling údajov Af pre Vægt Samt, ktorý registruje Af UID

Opsamling Af Data for Vægt Samt Registrating Af UID
Opsamling Af Data for Vægt Samt Registrating Af UID

Dokážeme spracovať údaje pre viac typov, zaregistrovať sa a uložiť značky RFID do pamäte Arduino MEGA2560 s čítačkou/zapisovačom RFID-RC522. Máme k dispozícii veľké množstvo údajov o simulátore, ktoré obsahujú údaje o priemernom a potenciálnom prúde analógového signálu pre Arduinoen.

Informácie o tom, ako postupovať:

1 stk potmeter 25k lineært. Yder-Benene er tilsluttet hhv. GND og +5V, stredný a stredný AN0

Doplnky RFID-RC522 k doskám Arduino SPI port pre nasledujúce moduly:

SDA -> kolík 53

SCK -> pin52

MOSI -> pin51

MISO-> pin50

IRQ -> NC

GND -> GND

RST -> pin5

3,3 V -> 3,3 V.

Deprsamlede data, for hhv. UID obsahuje a odosiela viac serverov, ktoré sú dodávané s rôznymi oddeľovačmi rôznych typov uzlov, pričom červená farba predstavuje jednu z nasledujúcich možností:

Krok 2: Program Arduino

I Arduino programme tools to to biblioteker SPI.h og MFRC522.h for at kunne bruge RFID læseren. Začínam s inicializátorom programovej premennej anvendte. Odchod od MFRC522. Inštalujem blokové inicializátory všetkých sériových portov, porty SPI a MFRC522. Dalsie skenovanie po tagoch RFID. Ak teda chcete odoslať viac údajov UID, ako by ste ich mohli vyhľadať, kliknite na obrázok, kde nájdete ďalšie informácie. Vyhľadajte a vyhľadajte značky UID, načítajú rôzne typy UID a používajú UID. HVIU pole nyUID obsahuje všetky staré UID možnosti prenosu údajov a identifikátorov UID, ktoré môžu odosielať z jedného sériového portu. Hvis nyUID og oldUID er ens, er der story om samme UID tag og UID'et skal ignoreres. Zoznámte sa s ďalším UID a pošlite ho do svojho sériového portu. Priemerný počet skalárov je 150-250. Údaje sa odosielajú z oddelených komôrok. Niektoré z nasledujúcich typov oldUID = nyUID, ktoré sú k dispozícii až do doby, kým nebudú k dispozícii žiadne ďalšie značky RFID. Ďalšie funkcie a programy programujú jednu alebo dve rôzne polia. Funktionen returnerer true hvis array'ne er ens, og false hvis array'ne er forskellige.

#zahrnúť

#include // Tento program skenuje karty RFID pomocou dosky na čítanie/zapisovanie RDIF-RC522. // UID sa číta, číta sa analógový pin. Analógová hodnota 0-1023 je škálovaná na 150-250. // UID a analógová hodnota sa odosiela ako text oddelený čiarkami na sériový port pomocou 9600, N, 8, 1. // Starostlivo bolo odoslané každé UID iba raz za sebou, // musí byť nové UID prítomný, než bude možné znova odoslať to isté UID. // Táto funkcia je implementovaná v kóde porovnaním polí: oldUID nyUID vo funkcii array_cmp (oldUID , nyUID )

constexpr uint8_t RST_PIN = 5;

constexpr uint8_t SS_PIN = 53; int senzorPin = A0; int hodnota = 0; Reťazec StringValue = "0000"; byte oldUID [4] = {}; bajt nyUID [4] = {};

MFRC522 mfrc522 (SS_PIN, RST_PIN); // Vytvorenie inštancie MFRC522.

neplatné nastavenie ()

{Serial.begin (9600); // Spustenie sériovej komunikácie SPI.begin (); // Spustenie zbernice SPI mfrc522. PCD_Init (); // Spustenie MFRC522}

prázdna slučka ()

{// Vyhľadajte nové karty, ak (! Mfrc522. PICC_IsNewCardPresent ()) {return; } // Vyberte jednu z kariet, ak (! Mfrc522. PICC_ReadCardSerial ()) {return; } // načítať nyUID so značkou UID pre (byte i = 0; i <mfrc522.uid.size; i ++) {nyUID = mfrc522.uid.uidByte ; } // if oldUID nyUID if (! array_cmp (oldUID, nyUID)) {// odoslanie UID značky na sériový port pre (byte i = 0; i 1000) {hodnota = 1000; } Hodnota = (hodnota / 10) + 150; // odoslanie zmenšenej analógovej hodnoty Serial.print (Hodnota); // odoslať nový riadok Serial.println (); // set oldUID = nyUID for (byte z = 0; z <4; z ++) oldUID [z] = nyUID [z]; } // čakať 1 s oneskorenie (1000); }

// porovnanie 2 polí …

boolean array_cmp (byte a , byte b ) {bool test = true; // otestujte každý prvok, aby bol rovnaký. ak nie je iba jeden, vráťte false pre (bajt n = 0; n <4; n ++) {if (a [n]! = b [n]) test = false; // ak sa v bajte nerovná, test = false} if (test == true) return true; else return false; }

Krok 3: Uzel-ČERVENÁ databáza Lagring Af Data I

Databáza Node-RED, Lagring Af Data I
Databáza Node-RED, Lagring Af Data I
Databáza Node-RED, Lagring Af Data I
Databáza Node-RED, Lagring Af Data I

Prietokový prúd a uzol ČERVENÁ:

COM4 ponúka veľké množstvo dátových úprav z palety Arduino. Funkcie rozdeľovača "Rozdeliť a získať hodnotu" alebo "Rozdeliť a získať UID" môžu obsahovať jeden alebo viac uhlov, ktoré môžu obsahovať jeden UID. Väčšie bruggy môžete vidieť na palubnej doske a mať schému a mierku. UID fremvises et et tekstfelt. Funktionen test_sound advarer verbaltmed with "Out of range", hvis vægten er under 170g eller over 230g, dvs i range 0.

Rozdeľte sa a získajte hodnotu:

var výstup = msg.payload.split (',');

temp = {užitočné zaťaženie: (výstup [1])}; teplota návratu;

Rozdeliť a získať UID:

var výstup = msg.payload.split (",");

temp = {užitočné zaťaženie: výstup [0]}; teplota návratu;

test_sound:

var number = parseInt (msg.payload);

if (number> 230 || number <170) {newMsg = {payload: "Out of range"}; vrátiť novú správu; } else {newMsg = {payload: ""}; vrátiť novú správu; }

Funkcie Rozdeliť reťazec "," indikátory a časové značky, identifikátor UID alebo databázu patedb.patelog.

var výstup = msg.payload.split (","); // rozdelenie msg.payload čiarkou do poľa

UIDTag = výstup [0]; // prvá časť do prvej polohy [0] ValueTag = výstup [1]; // druhá časť do druhej polohy [1]

var m = {

téma: "VLOŽIŤ DO Patedb.patelog (časová pečiatka, UID, hmotnosť) HODNOTY ('"+nový dátum (). toISOString ()+"', '"+UIDTag+"', '"+ValueTag+"');" }; návrat m;

Záznamy databázy MySQL sú zakázané a môžu obsahovať nasledujúce parametre:

Hostiteľ: localhost

Prístav: 3306

Užívateľ: root

Databáza: patedb

Krok 4: Návrh databázy

Návrh databázy
Návrh databázy

Databasen patedb indeholder 4 tabeller

patelog er dataopsamlingstabellen, tilskrives data af node-RED og C# programme

objednať tabuľku niektorých nezávislých údajov o genemførte ordrer, tilskrives data af C# programme

zákaznícky zabezpečený a registrovaný zákazník

rangetable er en tabel some independent people grænseværdierne for de i C# programmet benyttede range.

Krok 5: Patelog

Patelog
Patelog

Záznamy tabuliek nezávislých používateľov, ktorí majú 6 stĺpcov:

pateID (int) primárny kľúč a ďalšie automatické opravy.

Časová pečiatka, identifikátor UID a typ varchar (priemer pre maximálnu dĺžku)

rangeNr er typ typ tinyint (beregnes ogil tilføjes af C# programme)

ID objednávky alebo zadania int (ID objednávky do programu C#)

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

Krok 6: Objednateľné

Objednateľné
Objednateľné

objednávateľ nezávislý 5 kolonner:

orderID (int) er det aktuelle or adrenalummer

orderQuant (mediumint) er ordens pålydende antal

quantProduced (mediumint) er antal der rent faktisk er producentet på ordren. (Programy pre C#)

komentovať (drobný text), prípadne pridať komentár alebo adrenalín.

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

Krok 7: Zákaznícke

Zákaznícke
Zákaznícke

zákaznícky nezávislý 6 kolonner:

customerID (int) er primárny kľúč og auto inc.

meno, adresa, telefón, e -mail (najvhodnejšie) ako max

rangeNr (int)

Krok 8: Rangetable

Rangetable
Rangetable

nerozdeliteľný podiel na trhu 3 kolonner:

rangeNr (int) er primary key og auto inc.

rozsahMin (int)

rozsahMax (int)

Krok 9: Program C#

Program C#
Program C#

Nasledujú výrobcovia, ktorí vykonali nasledujúce práce:

Kondenzátor alebo alternatíva k bežnému programu môže zahŕňať aj program C# (vrátane bežných digitálnych a virtuálnych softvérových programov). Začíname s výrobou viacerých nástrojov, ktoré môžu byť på et transportbånd) Viac informácií nájdete v UID, alebo v súčasnej dobe odosielajú veľké množstvo údajov do uzla-ČERVENÉ, pričom niektoré údaje obsahujú údaje na prístrojovej doske a podobne. tidspunkt ikke tilskrives værdier til rangeNr og orderID vil de have værdien NULL.

Stredný a časový interval podčiarkuje program C# 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 aktueal orderID. Nájdete tu množstvo producentov, fanúšikov alebo fanúšikov, ktorí chcú „zastaviť“- knappen. Niektoré z týchto možností môžu mať vplyv na aktuálnu situáciu. Viac informácií nájdete v hlavnom článku, pričom môžete porovnať údaje a zoznámiť sa s údajmi z panela s tabuľkami, ktoré môžete aktualizovať. objednateľné dohľadové štítky, alebo veľké možnosti pre jednotlivcov UID'er eller kundedata pre jednotlivého vodiča.

pomocou System; using System. Collections. Generic; pomocou System. ComponentModel; pomocou System. Data; pomocou System. Drawing; pomocou System. Linq; pomocou System. Text; pomocou System. Threading. Tasks; pomocou System. Windows. Forms; pomocou MySql. Data. MySqlClient;

priestor názvov show_data_from_database

{public partial class Form1: Form {MySqlConnection connection = new MySqlConnection ("datasource = localhost; username = root; password = ''"); int Číslo_čísla = 0; // Premenná na ukladanie hodnoty pateID int RangeNumber = 0; // Premenná na ukladanie čísla rangen int weight = 0; // Premenná na ukladanie hmotnosti int OrderNr = 0; // Premenná pre ukladanie OrderNR int QuantProduced = 0; // Premenná na skladovanie vyrobeného množstva int NumberOfRows = 0; // počet riadkov s nulami.. bool ProdRunning = false; // Premenná indikujúca, či boli aktivované tlačidlá štart a stop int limity = nový int [6]; // inicializácia poľa int CustomerID; // Premenná pre ukladanie customerID public Form1 () {InitializeComponent (); load_table (); // zavolať load_table}

neplatné load_table ()

{MySqlCommand command = new MySqlCommand ("SELECT * FROM patedb.patelog ORDER BY timestamp DESC;", connection); skúste {MySqlDataAdapter adapter = new MySqlDataAdapter (); adapter. SelectCommand = príkaz; DataTable dbdataset = nový DataTable (); adaptér. Fill (dbdataset); BindingSource bsource = nový BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adaptér. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (ex. Message); }}

súkromná prázdnota SetRowOrder ()

{dataGridView1. Columns ["pateID"]. DisplayIndex = 0; // Jej hlavná informácia o kolonádach dátGridView1. Columns ["timestamp"]. DisplayIndex = 1; // Jej hlavná informácia o kolonáde obsahuje dataGridView1. Columns ["UID"]. DisplayIndex = 2; // Jej veľkosť súboru sa môže líšiť od dátumuGridView1. Columns ["weight"]. DisplayIndex = 3; // Jej veľkosť súboru sa môže líšiť od dátumuGridView1. Columns ["rangeNr"]. DisplayIndex = 4; // Jej hlavná informácia o kolonádach dátGridView1. Columns ["orderID"]. DisplayIndex = 5; // Jej hlavná stránka obsahuje informácie o koloniach}

private void GetData_Click (odosielateľ objektu, EventArgs e) // Číta databázovú tabuľku a objednávky podľa časovej pečiatky

{load_table (); }

private void btnRefreshUID_Click (odosielateľ objektu, EventArgs e) //

{string timeStr = "SELECT * FROM patedb.patelog OBJEDNAŤ PODĽA UID;"; Príkaz MySqlCommand = nový MySqlCommand (timeStr, pripojenie); skúste {MySqlDataAdapter adapter = new MySqlDataAdapter (); adapter. SelectCommand = príkaz; DataTable dbdataset = nový DataTable (); adaptér. Fill (dbdataset); BindingSource bsource = nový BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adaptér. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (ex. Message); }}

private void btnRefreshValue_Click (odosielateľ objektu, EventArgs e)

{string weightSort = "SELECT * FROM patedb.patelog OBJEDNÁVKA PODĽA VLOŽENIA (hmotnosť PODPISOVANÁ INTEGER);"; Príkaz MySqlCommand = nový MySqlCommand (weightSort, pripojenie); skúste {MySqlDataAdapter adapter = new MySqlDataAdapter (); adapter. SelectCommand = príkaz; DataTable dbdataset = nový DataTable (); adaptér. Fill (dbdataset); BindingSource bsource = nový BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; SetRowOrder (); adaptér. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (ex. Message); }}

súkromné neplatné ChkNullBtn_Click (odosielateľ objektu, EventArgs e)

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

súkromná prázdna CheckTableForNull ()

{// Kontrola/nastavenie intervalu časovača minimálne 100 ms int i; int. TryParse (textTimer1. Text, out i); if (i <100) {timer1. Stop (); i = 100; časovač 1. Interval = i; MessageBox. Show („Minimálna hodnota i 100 mS“); časovač 1. Spustiť (); } else {timer1. Interval = i; } textTimer1. Text = timer1. Interval. ToString (); // Skontrolujte, či sú v tabuľke k dispozícii riadky s hodnotou null, vráti počet riadkov v premennej: NumberOfRows string weightStr = ""; string chkNull = "VYBERTE COUNT (*) Z patedb.patelog KDE JE rangeNR NULL OBJEDNAJTE PODĽA pateID LIMIT 1;"; Príkaz MySqlCommand = nový MySqlCommand (chkNull, pripojenie); skúste {connection. Open (); NumberOfRows = Convert. ToInt32 (command. ExecuteScalar ()); pripojenie. Zavrieť (); } catch (Exception ex) {MessageBox. Show (ex. Message); } konečne {if (NumberOfRows! = 0) {try {// Vyberie najnižšie číslo pateID, kde rangeNr je NULL reťazec readID = "VYBERTE pateID FROM patedb.patelog KDE JE rangeNR NULL OBJEDNÁVKA PateID ASC LIMIT 1;"; MySqlCommand cmdID = nový MySqlCommand (readID, pripojenie); {connection. Open (); Číslo riadku = (int) cmdID. ExecuteScalar (); // celé číslo !! pripojenie. Zavrieť (); } listPateID. Text = RowNumber. ToString (); // prečítanie vybraného čísla PateID // vyberie hmotnosť z vybraného prečíslovaného riadka reťazca = RowNumber. ToString (); string readweight = "VYBERTE hmotnosť Z patedb.patelog KDE pateID =" + riadok; MySqlCommand cmdweight = nový MySqlCommand (hmotnosť na čítanie, pripojenie); {connection. Open (); weightStr = (reťazec) cmdweight. ExecuteScalar (); // Reťazec !! pripojenie. Zavrieť (); } weight = int. Parse (weightStr); // konvertovať na int txtWeight. Text = weight. ToString (); // print int RangeNumber = 0; ak (hmotnosť> = limity [0] && váha = limity [2] && hmotnosť = limity [4] && hmotnosť <= limity [5]) {RangeNumber = 3; }} txtRange. Text = RangeNumber. ToString (); UpdateLog (); } catch (Exception ex) {MessageBox. Show (ex. Message); } QuantProduced = QuantProduced + 1; }}} private void btnStart_Click (odosielateľ objektu, EventArgs e) {if (ProdRunning == false) {int valtest; skúste {CustomerID = int. Parse (txtCustomerNr. Text); // prečítajte si customerID} catch {MessageBox. Show ("Zadajte výrobné údaje a stlačte tlačidlo 'štart'."); }

test reťazca = "VYBERTE COUNT (*) Z patedb.customertable WHERE customerID ="+CustomerID;

MySqlCommand cmdtestcustomer = nový MySqlCommand (test, pripojenie); {connection. Open (); valtest = Convert. ToInt32 (cmdtestcustomer. ExecuteScalar ()); // vráti 0, ak zákazník neexistuje connection. Close (); } if (valtest == 1) // if customer exist in database - start production {try {OrderNr = int. Parse (txtOrderNumber. Text); ProdRunning = true; časovač 1. Spustiť (); textTimer1. Text = timer1. Interval. ToString (); ReadLimits (); } catch (Exception ex) {MessageBox. Show ("Zadajte výrobné údaje a stlačte tlačidlo 'štart'."); }} else MessageBox. Show ("Zákazník nie je v databáze, skúste to znova"); } // ReadLimits (); }

súkromné prázdne ReadLimits ()

{// Číta limity z rozsahu, rozsah 1 až 3 int počítadlo = 0; for (int rangeNr = 1; rangeNr <4; rangeNr ++) {string readmin = "SELECT rangeMin FROM patedb.rangetable WHERE rangeNr ="+rangeNr; MySqlCommand cmdmin = nový MySqlCommand (readmin, pripojenie); {connection. Open (); limity [počítadlo] = (int) cmdmin. ExecuteScalar (); počítadlo = počítadlo + 1; pripojenie. Zavrieť (); } // MessageBox. Show (counter. ToString ()); reťazec readmax = "VYBERTE rozsahMax OD Patedb.rangetable KDE rangeNr =" + rangeNr; MySqlCommand cmdmax = nový MySqlCommand (readmax, pripojenie); {connection. Open (); limity [počítadlo] = (int) cmdmax. ExecuteScalar (); počítadlo = počítadlo + 1; pripojenie. Zavrieť (); }} // koniec pre slučku}

súkromný prázdny UpdateLog ()

{// UPDATE rangeNR & orderID string Range = RangeNumber. ToString (); reťazec Order = OrderNr. ToString (); aktualizácia reťazca = "UPDATE patedb.patelog SET rangeNr ="+Range+','+"orderID ="+OrderNr+"WHERE pateID ="+RowNumber; MySqlCommand updatecmd = new MySqlCommand (aktualizácia, pripojenie); skúste {connection. Open (); updatecmd. ExecuteNonQuery (); pripojenie. Zavrieť (); } catch (Exception ex) {MessageBox. Show (ex. Message); }}

private void btnStop_Click (odosielateľ objektu, EventArgs e)

{if (ProdRunning == true) {timer1. Stop (); ProdRunning = false; UpdateOrderTable (); } else {MessageBox. Show ( Ešte sa nezačala výroba. Zadajte údaje a stlačte tlačidlo 'štart')); }}

súkromné neplatné 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 = nový MySqlCommand (vloženie, pripojenie); skúste {connection. Open (); insertcmd. ExecuteNonQuery (); pripojenie. Zavrieť (); QuantProduced = 0; } catch (Exception ex) {MessageBox. Show (ex. Message); }}

súkromný neplatný časovač1_Tick (odosielateľ objektu, EventArgs e)

{CheckTableForNull (); load_table (); }

private void btnShowOrderTable_Click (odosielateľ objektu, EventArgs e)

{if (ProdRunning == false) {MySqlCommand command = new MySqlCommand ("SELECT * FROM patedb.ordertable ORDER BY orderID DESC;", connection); skúste {MySqlDataAdapter adapter = new MySqlDataAdapter (); adapter. SelectCommand = príkaz; DataTable dbdataset = nový DataTable (); adaptér. Fill (dbdataset); BindingSource bsource = nový BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adaptér. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (ex. Message); }} else {MessageBox. Show ("Press stop to wiev orderTable"); }}

private void btnShowOrderDetails_Click (odosielateľ objektu, 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 +"' "); Príkaz MySqlCommand = nový MySqlCommand (test, pripojenie); skúste {connection. Open (); Adaptér MySqlDataAdapter = nový MySqlDataAdapter (); adapter. SelectCommand = príkaz; DataTable dbdataset = nový DataTable (); adaptér. Fill (dbdataset); BindingSource bsource = nový BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adaptér. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (ex. Message); } spojenie. Zavrieť (); } else {MessageBox. Show ("Stlačením stop zobrazíte podrobnosti objednávky"); }}

private void btnShowCustomerDetails_Click (odosielateľ objektu, 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 +"' "); Príkaz MySqlCommand = nový MySqlCommand (test, pripojenie); skúste {MySqlDataAdapter adapter = new MySqlDataAdapter (); adapter. SelectCommand = príkaz; DataTable dbdataset = nový DataTable (); adaptér. Fill (dbdataset); BindingSource bsource = nový BindingSource (); bsource. DataSource = dbdataset; dataGridView1. DataSource = bsource; adaptér. Update (dbdataset); } catch (Exception ex) {MessageBox. Show (ex. Message); }} else {MessageBox. Show ("Stlačením tlačidla stop zobrazíte podrobnosti o zákazníkovi"); }}}

}

Odporúča: