Adatbázis-kezelés ActiveX vezérl kkel 2.rész Készítette: Szabóné Nacsa Rozália 2004. november
Feladat Figyelmeztetés, Figyelmeztetés, ha ha betelt betelt a a csoport. csoport. Csoport Csoport kiválasztása kiválasztása A tag tag tábla tábla csak csak a a kiválasztott kiválasztott csoport csoport tagjait tagjait mutatja. mutatja. A kiválasztott kiválasztott diák diák adatát adatát dupla dupla kattintással kattintással lehet lehet áttölteni áttölteni a a tag tag táblába. táblába.
Projekt létrehozása -1
Projekt létrehozása - 2
Projekt létrehozása - 3
ActiveX vezérl beillesztése a projektbe -1
Data Control, DBGrid Control DBGrid DBGridControl Microsoft Microsoft Remote RemoteData Data Control, Control, version version 6.0 6.0
ADO Data Cotrol, True OLE DBGrid 8 Control True TrueOLE DBGrid DBGrid8 8 Control Control Microsoft Microsoft ADO ADO Data DataControl, version version 6.0 6.0 (OLEDB) (OLEDB)
Microsoft Forms 2.0 TextBox
Csoport tábla elhelyezése IDC_GRID_CSOPORT: True TrueOLE DBGrid DBGrid8 8 Control Control IDC_DATA_CSOPORT Microsoft Microsoft ADO ADO Data DataControl, version version 6.0 6.0 (OLEDB) (OLEDB)
IDC_DATA_CSOPORT beállítása select select csoport_id,csoport.nev,felev.kezdet,felev.szam,gyakvez.nev gyakvez_nev gyakvez_nev,csoport.max,csoport.max from fromcsoport,gyakvez,felev where wherecsoport.felev_id=felev.felev_id and and csoport.gyakvez_id=gyakvez.gyakvez_id
IDC_GRID_CSOPORTbeállítása A táblázat táblázat az az adatait adatait az az IDC_DATA_CSOPORT-tól veszi. veszi.
Teljes Teljes sor sor kijelölése. kijelölése. Az Az utolsó utolsóoszlop oszlop töltse töltse ki ki a a teljes teljes táblázatot. táblázatot.
Oszlopok formázása
Adatmez Adatmez kijelölése kijelölése Oszlopfelirat Oszlopfelirat megadása megadása
Adatmegjelenítés szabályozása
Fordítás/Futtatás
Tag tábla elhelyezése IDC_GRID_CSOPORT: True TrueOLE DBGrid DBGrid8 8 Control Control IDC_DATA_CSOPORT Microsoft Microsoft ADO ADO Data DataControl, version version 6.0 6.0 IDC_GRID_TAG: IDC_GRID_TAG: True TrueOLE DBGrid DBGrid8 8 Control Control IDC_DATA_TAG IDC_DATA_TAG Microsoft Microsoft ADO ADO Data DataControl, version version 6.0 6.0
IDC_DATA_TAG beállítása select select tag.diak_id, tag.diak_id, concat(diak.nev,'[',diak.azon,']') diak_azon,tag.csoport_id, pont1,pont2,pont3,pont4 from fromtag,diak
IDC_GRID_TAG beállítása Módosítás, Módosítás, törlés, törlés, beszúrás beszúrás engedélyezése engedélyezése Adatforrás: Adatforrás: IDC_DATA_TAG IDC_DATA_TAG
Oszlopok formázása Az Az utolsó utolsóoszlop oszlop és és az az ablak ablak széle széle között között ne ne legyen legyen kitöltetlen kitöltetlen sáv. sáv. Módosítsuk Módosítsuk az az oszlopfeliratokat. oszlopfeliratokat.
Csoport_id elrejtése
Táblák összekapcsolása: változók bevezetése Változók Változók hozzárendelése hozzárendelése a a vezérl vezérlkhöz
Táblák összekapcsolása: RefreshTag() bevezetése
Táblák összekapcsolása: eseménykezel k beillesztése Csoport Csoport tábla tábla Üzenet: Üzenet: RowColChange RowColChange Csoport Csoport tábla tábla Üzenet:Click Üzenet:Click
ActiveView osztály: RefreshTag() void voidctestview::refreshtag() {{ //aktuális //aktuális csoport csoport lekérdezése activeeafview.cpp lekérdezése m_gridcsoport.setcol(0); 1 CString CStringcsop csop = m_gridcsoport.gettext(); //tag //tag tábla tábla frissítése frissítése CString CStringq; q; q.format("select q.format("selecttag.diak_id, tag.diak_id, concat(diak.nev,'[',diak.azon,']') diak_azon,tag.csoport_id,pont1,pont2,pont3,pont4 from fromtag,diak 2 where wheretag.diak_id=diak.diak_id and andcsoport_id = %s",csop); %s",csop); m_datatag.setrecordsource(q); m_datatag.refresh(); }} 1 2
Csoport tábla: RowColChage, Click események kezelése void voidcactiveeafview::onrowcolchangegridcsoport(variant FAR* FAR* LastRow, LastRow, short shortlastcol) {{ RefreshTag(); RefreshTag(); activeeafview.cpp }} void voidcactiveeafview::onclickgridcsoport() {{ RefreshTag(); RefreshTag(); }} activeeafview.cpp
Csoport_id automatikus kitöltése Új Új diák diák felvételekor felvételekor a a kiválasztott kiválasztott csoport csoport csoport_id-je csoport_id-jeautomatikusan kerüljön kerüljön be be a a tag tag tábla tábla új új rekordjába. rekordjába.
Csoport tábla: BeforeUpdate esemény void void void voidcactiveeafview::onbeforeupdategridtag(short FAR* FAR* Cancel) Cancel) {{ m_gridcsoport.setcol(0); CString CStringcsop csop = m_gridcsoport.gettext(); m_gridtag.setcol(0); m_gridtag.settext(csop); m_gridtag.setcol(1); activeeafview.cpp }}
Tag tábla: AfterUpdate esemény A Diák Diák azonosító azonosító számított számított adat adat frissítése. frissítése. void voidcactiveeafview::onafterupdategridtag() {{ m_datatag.refresh(); }}
Szövegdoboz vezérl k bevezetése IDC_GRID_CSOPORT: IDC_DATA_CSOPORT True TrueOLE DBGrid DBGrid8 8 Control Control Microsoft Microsoft ADO ADO Data DataControl, version version 6.0 6.0 IDC_TEXTBOX_MAX: Microsoft Microsoft Forms Forms2.0 2.0 TextBox TextBox IDC_TEXTBOX_COUNT: Microsoft Microsoft Forms Forms2.0 2.0 TextBox TextBox IDC_DATA_MAX IDC_DATA_MAX Microsoft Microsoft Remote RemoteData DataControl Control6.0 6.0 IDC_DATA_COUNT Microsoft Microsoft Remote RemoteData DataControl Control6.0 6.0
Data Control beállításai IDC_DATA_MAX IDC_DATA_MAX Microsoft Microsoft Remote RemoteData DataControl Control6.0 6.0 IDC_DATA_COUNT Microsoft Microsoft Remote RemoteData DataControl Control6.0 6.0
IDC_TEXTBOX_MAX: Microsoft Microsoft Forms Forms2.0 2.0 TextBox TextBox IDC_TEXTBOX_COUNT: Microsoft Microsoft Forms Forms2.0 2.0 TextBox TextBox
Változók definiálása
Max és Count frissítése void voidctestview::refreshtag() {{ //aktuális //aktuális csoport csoport lekérdezése lekérdezése m_gridcsoport.setcol(0); CString CStringcsop csop = m_gridcsoport.gettext(); //tag //tag tábla tábla frissítése frissítése CString CStringq; q; q.format("select q.format("selecttag.diak_id, tag.diak_id, concat(diak.nev,'[',diak.azon,']') diak_azon,tag.csoport_id,pont1,pont2,pont3,pont4 from fromtag,diak where wheretag.diak_id=diak.diak_id and andcsoport_id = %s",csop); %s",csop); m_datatag.setrecordsource(q); m_datatag.refresh(); //max //maxés és count countfrissítése q.format("select q.format("selectcount(*) count(*) from fromtag tag where wherecsoport_id=%s;",csop); m_datacount.setsql(q); m_datacount.refresh(); }} q.format("select q.format("selectmax maxfrom fromcsoport where wherecsoport_id=%s",csop); m_datamax.setsql(q); m_datamax.refresh();
Számláló frissítése void voidcactiveeafview::onafterdeletegridtag() {{ RefreshTag(); RefreshTag(); } void } voidcactiveeafview::onafterinsertgridtag() {{ RefreshTag(); RefreshTag(); }}
Üzenet beillesztése
Ellen rzött adatbevitel void voidctestview::refreshtag() {{ //aktuális //aktuális csoport csoport lekérdezése lekérdezése.... //tag //tag tábla tábla frissítése frissítése.... //max //maxés és count countfrissítése.... //Ellen //Ellen rzött rzött adatbevitel adatbevitel biztosítása biztosítása //Csak //Csak akkor akkor vehet vehet fel fel új új diák diák a a csoportba, csoportba, ha ha van van hely hely int int free free = atoi(m_textboxmax.gettext()) --atoi(m_textboxcount.gettext()); if if (free (free <= <= 0){ 0){ m_comment= m_comment= "Nincs "Nincs több több szabad szabad hely!"; hely!"; m_gridtag.setallowaddnew(false); }} else else {{ m_comment.format(""); m_gridtag.setallowaddnew(true); }} UpdateData(FALSE); }}
A pontok megadása ComboBox-ban
Fordítás, futtatás Az Az új új diákot diákot a a diak_id diak_idalapján alapján lehet lehet megadni. megadni. Nem Nem felhasználóbarát! felhasználóbarát!
Diák tábla beillesztése IDC_GRID_DIAK: IDC_GRID_DIAK: True TrueOLE DBGrid DBGrid8 8 Control Control IDC_DATA_DIAK IDC_DATA_DIAK Microsoft Microsoft ADO ADO Data DataControl, version version 6.0 6.0
Diák tábla: Data Control beállításai
Diák tábla: DBGrid beállításai A diák diák tábla tábla nem nem módosítható. módosítható. A táblázat táblázat adatait adatait az az IDC_DATA_DIAK IDC_DATA_DIAK vezérl vezérl biztosítja. biztosítja.
Diák tábla: DBGrid beállításai Kijelölés Kijelölés módja: módja: teljes teljes sor sor
Tag tábla: DBGrid beállításai
Diák adatainak beillesztése a tag táblába Dupla Dupla kattintás kattintás eseménykezel eseménykezel beillesztése. beillesztése. Változók Változók hozzárendelése hozzárendelése a a vezérl vezérlkhöz.
OnDblClickGridDiak() - 1 void voidcactiveeafview::ondblclickgriddiak() {{ if(atoi(m_textboxcount.gettext())==0){ m_gridtag.setrow(0); }} else else {{ m_gridtag.movelast(); m_gridtag.setrow(m_gridtag.getrow()+1); }} m_griddiak.setcol(0); CString CStringid id = m_griddiak.gettext(); m_gridtag.setcol(1); m_gridtag.settext(id); m_griddiak.setcol(1); CString CStringazon azon = m_griddiak.gettext(); m_griddiak.setcol(2); CString CStringnev nev = m_griddiak.gettext(); CString CStringnev_azon nev_azon = nev nev + "[" "[" + azon azon + "]"; "]"; m_gridtag.setcol(2); m_gridtag.settext(nev_azon); }} m_gridtag.setfocus();....
Fordítás, futtatás
A munkafüzetben bemutatott projekt letölthet a people.inf.elte.hu/nacsa/eaf/eaf4/projects/eaf_activex1 címr l.