Új hozzászólás Aktív témák
-
Gh0sT
addikt
Egy formon a következő képpen tudod használni:
1. Szükség lesz egy TextBox-ra, amiben bekéred a keresendő azonosító egy részletét, vagy akár az egész stringet. (KERESO_MEZO)
2. Szükség lesz magára az AZONOSITO-ra szintén egy TextBox formájában.
3. Szükség lesz egy találati mezőre is. Mivel nem ismerem a példát, ezért ez legyen egyelőre a TERMÉK mező Textbox formájában. Ezzel igazából sok dolgod nem lesz, csak beszúrod a formra és automatikusan megjelennek benne a találatok. Ha szeretnél még egyéb mezőket hozzáadni, akkor hasonlóan kell eljárnod.
4. Beraksz még a formra egy Command buttont, aminek a Click eseményéhez hozzárendeled az alábbi kódot:
Private Sub Parancsgomb1_Click()
AZONOSITO.SetFocus
DoCmd.FindRecord KERESO_MEZO.Value, acAnywhere, False, acSearchAll, , acCurrent, True
End Sub
Ez akár kód töredékre is keresni fog és az első találatot jeleníti meg. Én szoktam még mellé egy másik Command buttont is beszúrni ''Következő'' felirattal, így végig tudok menni az egész adatbázison, ha esetleg több találat lenne.
Ennek a kódja:
Private Sub Parancsgomb2_Click()
On Error GoTo Err_Parancsgomb2_Click
Screen.PreviousControl.SetFocus
DoCmd.FindNext
Parancsgomb2.SetFocus
Exit_Parancsgomb2_Click:
Exit Sub
Err_Parancsgomb2_Click:
MsgBox Err.Description
Resume Exit_Parancsgomb2_Click
End SubSoha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
Összedobtam egy példát: [link]
Nézd meg a mögötte lévő kódot, nem nagy szám:
Option Compare Database
Private Sub Form_Load()
DoCmd.GoToRecord , , acNewRec
End Sub
Private Sub Parancsgomb22_Click()
Azonosito.SetFocus
DoCmd.FindRecord Szöveg23.Value, acAnywhere, False, acSearchAll, , acCurrent, True
End Sub
Még lehet finomítani, de ez már működik. A keresőmezőbe 1-5 között írhatsz értékeket.Soha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
The server you were trying to contact sent an invalid response
Possible reasons:
The server violates the HTTP/1.1 protocol
There's an interoperability problem between the server and this gateway
Possible solutions:
Contact your system administrator for assistance
Contact your Zorp support for assistance
Additional information:
Invalid headers received in response
--------------------------------------------------------------------------------
Page generated by Zorp on aule, version 3.0.8 on Tue May 23 10:25:34 CEST 2006.
Nevezd át jpg-re és küldd el a mail címemre!Soha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
Van egy kis gond. Nálam ez lefagy... Van egy makró az adatbázisban és az hviatkozik valamire, ami miatt nem tudok vele dolgozni. Kivehetem a makrót?
Váááá, ez még mindig sérült... Nálad működött rendesen? Nem is bírom helyreállítani.
[Szerkesztve]Soha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
Az nem probléma, hogy hálózati gépre van mentve, úgy is működnie kellene. Viszont küldtem mailt, amiben végre nincs hibaüzenet és megy a keresés. Ha kell, akkor tudok rajta még egy kicsit pofozni, hogy ne dobjon hibaüzenetet üres keresőmezőre.
Soha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
Még egy kis apróság, ami nálad hátrány lehet. Jelenleg a keresés nem jól működik, egy kis kozmetikázás után így szebb lesz:
Private Sub Parancsgomb2_Click()
DoCmd.GoToRecord , , acNewRec
If IsNull(Szöveg0.Value) Then
MsgBox (''Keresés előtt kötelező a mező kitöltése'')
Szöveg0.SetFocus
Szöveg0.BackColor = 11053311
Else
vagatkod.SetFocus
DoCmd.FindRecord Szöveg0.Value, acEntire, False, acSearchAll, , acCurrent, True
Szöveg0.BackColor = 16777215
End If
End Sub
Ezzel nem fogsz visszakapni rossz találatokat, erről az acEntire tulajdonság gondoskodik.Soha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
Egy ötlet: amikor terméket rögzítesz, akkor egy mezőbe letárolod a rögzítés dátumát a now() függvénnyel. Ezután csinálsz egy olyan lekérdezést, ami fordított sorrende rendezi a termékeket a rögzítés időpontja szerint. Ilyenkor a lekérdezés első eleme mindig az utoljára rögzített termék lesz. Erre kell majd hivatkozni.
Soha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
Közben találtam egy elegánsabb megoldást:
Nincs szükség így a dátum rögzítésére sem.
Csinálsz egy új lekérdezést. Hozzáadod a táblákat, majd a táblából a megjeleníteni kívánt mezőt lehúzod a tervezőbe. Ezután fent az eszköztáron a szumma jelre klikkelsz. Megjelenik egy új feltétel a lekérdezésnél ''Összesítés'' címszóval. Itt kiválasztod a Last függvényt és kész is van.
SQL-ben valahogyan így néz ki:
SELECT Last(Tábla.Mező) AS Mezőnév
FROM Tábla;
Még egy fontos dolog!
A mező, amit lehúzol mindenképpen az Azonosító legyen, és ebben a lekérdezésben több mező nem szerepelhet!!!
Ha más adatokra is kíváncsi vagy, akkor kell készíteni egy másik lekérdezést, amit kapcsolni kell ehhez.
[Szerkesztve]Soha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
A bezáró gombhoz hozzáadod ezt:
DoCmd.OpenReport ''Jelentés neve'', acViewPreview
DoCmd.PrintOut acPrintAll
A PrintOut-ot nem tudom, hogy miként kellene paraméterezni, mert nincs itthon nyomtatóm, de valszeg ezt a parancsot kell használni.Soha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
Ha először letárolod az adatokat, majd utána meghívod a lekérdezésre alapuló jelentést és csak végül nyomtatsz, akkor nem lesz gond. Remélem...
Szerk.: A két üres lap hol helyezkedik el és miért üres? Fel vannak töltve rendesen a rekordok? Az oldalak nem csúsznak át a következő lapra?
[Szerkesztve]Soha nem késő, hogy azzá válj, aki lehettél volna.
-
jeges
senior tag
nem köll a lekérdezést meghívni, mer' - ahogy szellem kollega írta - a riport meghívja a lekérdezést.
egyébként emlékeim szerint a ''makro'' is az openreport parancsot használja, annak viszont van olyan paraméterezése is, ami nyomtat, nem pedig preview-t mutat (az acviewpreview helyett köll vmi más, talán acviewnormal).
a letárolásra kellene elég idő legyen, de ha attól tartasz, h nincs, akkor érdemes egy ''tárol'' gombot az űrlapra applikálni, ami ''csak'' elmenti az aktuális rekordot. esetleg megoldást jelenthet az egyetlen gombos megoldásnál (mentés, bezárás, riport nyomtatás egyszerre), ha váratsz egy kicsit (pár másodpercet) a nyomtatás parancs előtt - ezt makróból is meg lehet tenni (csak nincs itthon access telepítve, és fejből nem tudom, melyik parancs az sajna).
egyébként én első blikkre fordított sorrendben csinálnám kódban, azaz a) rekord mentése, b) riport nyomtatása (ill szebb, ha rákérdez a nyomtatásra előbb) c) űrlap bezárása. -
jeges
senior tag
ha modulból akarod vezérelni (ami szerintem gyorsabb és ''tisztább''), akkor a szellem kollega által leírtaka próbáld, azaz
létrehozol egy lekérdezést, ami a kivánt rekord adatait hozza le (gondolom vmiféle paraméterezéssel)
létrehozol egy riportot, lehetőleg varázslóval, mer' úgy egyértelmű a dolog, a fontos az, hogy az előző lekérdezésen alapuljon (azaz a forrása az a lekérdezés legyen).
az űrlapra kiteszel egy parancsgombot, aminek a tulajdonságai közt a 3. fülön vannak az eseményvezérelt eljárások. létrehozol egy modult hozzá (azaz ''eseményvezérelt eljárás'' az onclick-re), és a modulba ezt írod:
if me.dirty then
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
DoCmd.OpenReport ''Jelentés neve'', acViewNormal
me.close
sajna itthon továbbra sincs access, úgyhogy csak fejből írtam, a domenuitem parancsra csak halványan emlékszem...lehet, hogy acrecordmenu, vagy csak acsave, de alapjában a fentiről van szó.
az openreport parancsot így is tudod paraméterezni, hogy csak az aktuális rekordra legyen szűrve az űrlapról, de ez most fejből nem fog menni... -
sszever
őstag
Nos az alábbi módon oldottam meg:
ha igaz, kiírja az eredményt, ha hamis nem csinál semmit (erre kitalálok még valamit)
Viszont, ami nagyon zavar:
van lent a lábrészben az űrlapnak a rekordléptetés része. Azt hogy lehet eltüntetni???Csak egy ember hiányzik, és máris üres a világ!
-
-
Gh0sT
addikt
Private Sub Parancsgomb2_Click()
DoCmd.GoToRecord , , acNewRec
If IsNull(Szöveg0.Value) Then
MsgBox (''Keresés előtt kötelező a mező kitöltése'')
Szöveg0.SetFocus
Szöveg0.BackColor = 11053311
Else
vagatkod.SetFocus
DoCmd.FindRecord Szöveg0.Value, acEntire, False, acSearchAll, , acCurrent, True
Szöveg0.BackColor = 16777215
Szerintem itt jó lesz
End If
End SubSoha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
Megnéztem, egy gond van vele:
Az űrlap ugye egy SQL lekérdezésen alapul, amiben a foglalas-hoz az igaz érték van hozzárendelve (ergo csak azok a termékek jelennek meg, amelyek le vannak foglalva). Annyi a dolgod, hogy ezt a feltételt kiveszed.
Magyarán: keress most rá mondjuk a 14. termékre
Találat: nem lesz, mert alapból úgy hívod meg a lekérdezést, hogy kiszűröd a le nem foglalt termékeket.
Teendő:
Szerkeszted az űrlapot, tulajdonságok, adat, rekordforrás, ...
Bejön ugye a lekérdezés, amiben a foglalás mező alatt kitörlöd az Igaz feltételt.
Ennyi.Soha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
Nem, nem gond.
Módosítod a kódot:
Private Sub Form_Load()
DoCmd.GoToRecord , , acNewRec
End Sub
Private Sub Parancsgomb2_Click()
DoCmd.GoToRecord , , acNewRec
If IsNull(Szöveg0.Value) Then
MsgBox (''Keresés előtt kötelező a mező kitöltése'')
Szöveg0.SetFocus
Szöveg0.BackColor = 11053311
Else
vagatkod.SetFocus
DoCmd.FindRecord Szöveg0.Value, acEntire, False, acSearchAll, , acCurrent, True
Szöveg0.BackColor = 16777215
If foglalas.Value = False Then
MsgBox (''Az temék még nem lett lefoglalva'')
Ide kell beírni egy olyan kódot, ami letiltja a kivételezést. Ha ezt a kivételezés kapcsolóval csinálod, akkor csak ennyi:
kiadva.Enabled = False
End If
End If
End Sub
Szerk.: esetleg
kiadva.Visible = False
Bár szerintem elegánsabb egy olyan megoldás, hogy rejted a kapcsolót és beraksz a helyére egy parancsgombot (Parancsgombx) Kiadás felirattal.
Ennek a click eseményéhez hozzárendeled az alábbit:
If kiadva.Value = False then
kiadva.Value = True
Parancsgombx.Caption = ''A termék kiadva''
else
kiadva.Value = False
Parancsgombx.Caption = ''Termék kiadása''
End If
Fentebb pedig a Parancsgombx.Enabled tulajdonságát engedélyezed, vagy tiltod.
[Szerkesztve]Soha nem késő, hogy azzá válj, aki lehettél volna.
-
jeges
senior tag
nekem nem egyértelmű: az a cél, hogy az űrlapon csak a kiadott vagy kiadható (azaz lefoglalt vagy nem lefoglalt) cikkek látszanak, vagy a foglalhatóság megteremtése? szellem kollega megoldása gyakorlatilag a lefoglalás műveletét oldja meg, ha jól értem, de most úgy tűnik, nem ez a feladat. (''ha le nem foglaltra nyomok, akkor is lefoglalja'')
ghost: én az ilyesmit esetleg váltógombbal szoktam csinálni, azon is egyértelműen látszik, mi az ábra. -
Gh0sT
addikt
Még egy fontos dolog!!!
Látom, hogy az azonosítást számlálóval oldod meg. Ha többen használjátok a táblát, akkor ez a megoldás hibát fog eredményezni. Ez akkor következik be, amikor egyszerre ketten is rögzítenek terméket és a számláló mindkét esetben ugyanazt az értéket kapná. Vagyis igazából nem kapja, de valamiért ilyenkor ketté válik az adatbázis. A felek nem fogják látni a másik által rögzített termékeket.Soha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
Én ezt úgy oldottam meg, hogy meghagytam az azonosítót számlálónak és a tábla tervező nézetében átállítottam véletlenszerűre az értékadást. Ezzel ugye szinte biztos, hogy egyedi értéket fogsz kapni mindig és nem fognak eltűnni az adatok.
Hátránya, hogy a user nem fogja ismerni az azonosítót. Ezért itt beraktam egy azonosító1 nevű mezőt, amit ő adhat meg és igazából semmilyen célt nem szolgál, csak keresni lehet rá.Soha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
A Keresés parancsgomb kódján kell változtatni.
A 2. feltétel vizsgálat után van egy ilyen sor:
If kiadva.Value = True Then
Parancsgomb19.Caption = ''A termék kiadva''
Parancsgomb19.Enabled = True
A True értéket kell átírni False-ra az utolsó sorban.
Parancsgomb19.Enabled = False
[Szerkesztve]Soha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
''Nekem valahogy úgy logikus, ha az vastagság több rekordjához az ötvözet egy rekordja tartozik (hisz egy ötvözeten belül lehet több vastagság!).''
Én a következőt érzem:
- egy ötvözet lehet többféle vastagságú (mondjuk 1-5 mm)
- egy adott vastagság több ötvözethez is tartozhat
Ez egy több a többhöz kapcsolat. Persze pontosan nem látom át a példát, de nem lehet, hogy ez a gond?
Egyébként ne kenődj el, én a Visual Basic topicban teszem fel az adatmodellezéssel kapcsolatos primitív kérdéseimet! Valahol el kell kezdeni.
Szerk.: korán van, még írni sem tudok.
[Szerkesztve]Soha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
Több a többhöz kapcsolattal nem fogsz tudni mit kezdeni Access-ben. Szükség lesz egy kapcsolótáblára.
Ötvözet tábla (n) ------- (n) Vastagság tábla
Ötvözet tábla (1) ------- (n) Kapcsoló tábla (n) ------- (1) Vastagság tábla
A kapcsolótábla fogja tartalmazni az ötvözet és a vastagság kódját is és nem lesz benne elsődleges kulcs.
Viszont ebben nem vagyok biztos, tehát mielőtt szétbombázod az adatszerkezetet, valaki megerősíthetne.Soha nem késő, hogy azzá válj, aki lehettél volna.
-
Gh0sT
addikt
Nah, van erre is megoldás
A DISTINCT SQL parancs kell hozzá.
Egy példa: van egy tábla, amiben vannak mondjuk személyek, akiknek nyilván van tartva a lakóhelyük. Ugye egyértelmű, hogy többen is lakhatnak egy helyen, de te csak egyszer szeretnél megjeleníteni minden települést
SELECT DISTINCT telepules_nev FROM szemely
Ugyanezt meg tudod csinálni a te tábláidra is.Soha nem késő, hogy azzá válj, aki lehettél volna.
Új hozzászólás Aktív témák
- Samsung Galaxy A52 5G - nem csak egy G-vel több
- Kerékpárosok, bringások ide!
- Politika
- Milyen billentyűzetet vegyek?
- Bambu Lab X1/X1C, P1P-P1S és A1 mini tulajok
- Motoros topic
- Horgász topik
- Háztartási gépek
- Multimédiás / PC-s hangfalszettek (2.0, 2.1, 5.1)
- HTPC (házimozi PC) topik
- További aktív témák...
- Megmaradt - Eredeti Humble, Choice - Steam kulcsok
- Windows 10/11 Home/Pro , Office OEM/Retail kulcsok
- AKCIÓ! - STEAM kulcsok / Punch Club, Oddworld: Soulstorm, Children of Morta, stb. - 2024.05.16.
- PC JÁTÉKOK (OLCSÓ STEAM, EA , UPLAY KULCSOK ÉS SOKMINDEN MÁS IS 100% GARANCIA )
- Eladó Steam kulcsok kedvező áron!
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs