Olyan kérdésem lenne ami nem kapcsolódik közvetlenül az access-hez, hanem inkább API hívások VB-ben lenne.
A köv. dolgot kellen megoldanom: Modem kezelése egy programból. Ilyenek, hogy: Megállapítani, hogy modem működik-e, ha igen akkor telefonhívás rajta keresztül és egyebek. Ötlet valakinek, hogy hol nézzek utána? Esetleg minta példák. Access 97 alatt akarom megcsinálni.
Vannak ugye a recordsetek és ottan a megszokott mezőhivatkozás:
Act!BizSzama
Act ez esetben egy recordset. Nos. 2000-es vagy annál nagyobb verziójú access-nél kiakad ez a rész mondván, hogy: "Item not found in this collection". Tehát az adott mezőt nem találja. Nade! Ez a mező létezik. Oké. Nem BizSzama, hanem BIZSZAMA (tehát csupa NAGYBETŰ). Ahogyan átírom nagybetűs alakra minden oké. Ez normális dolog? Ezzel nem volt gond a 97-esig bezárólag. Odáig mindegy volt, hogy változókat, mezőneveket miként írok tsak a karakterek egyezzenek meg, kis és nagybetű NEM számított.
Ki lehet valahogyan küszöbölni? Esetleg valami beállítási lehetőség? Vagy át kell nyálazni az egész kódot és kijavítani a mezőneveket betűhelyesen, kisbetűre, nagybetűre figyelve? Ezt valahogyan nem szeretném...
Hasonló problémám nekem is volt, csak én párhuzamosan akartam használni a 2000-t és a 97-est. Mindig a 2000-s indult el. Valami olyasmi rémlik, hogy előbb feltettem az Xp-t, az felülírta a 2000-t, utána már hagyta futni a 97-est is. Ez egyszerübb, mint a reg.-ben kibányászni az összes office kulcsot.
Van egy tábla, amibe folyamatosan kerülnek az adatok, többek között dátum is. Adott egy lekérdezés, ami pl összegez egy szám-oszlopot. Szeretném úgy megszerkeszteni a QBE-rácsot, hogy a lekérdezés futtatásakor kérdezze meg, hogy mettől meddig (dátum) összegezzen? Biztos nagyon egyszerű, de én nem találtam ilyen lehetőséget. Segítsetek.
Hogyan lehet kódból egy menüsor adott menüelemét letiltani vagy engedélyezni? Nem makróból összeállított menüre gondolok, hanem olyanra amit a Testreszabás panellel rakok össze.
A köv. problémám van. Van a gépen office 2000-es. Word, excel, access... ehelyett akartam feltenni 97-es office-t word, excel, access... Nos. Mikor lekapom uninstallal a 2000-est majd helyette felrakom a 97-est akkor az access NEM települ fel. Miért? (nyilván valami hivatkozás marad a 2000-esre) Tud valaki olyan módszert ami fullra, minden nyom nélkül lekaparja a gépről a nyamvadt 2000-est? Mondjuk valami uninstall progi? A gyalutól eltekintenék ...
Srácok, segítsetek nekem, adatbázisom egyik napról a másikra kezd furcsa dolgokat művelni. Azt mondja az egyik lekérdezésemnél, hogy "a Format függvény nincs definiálva". De hát eddig működött! Mi lehet a gond?
Igen, valóban nem volt ennyire 1xű a dolog de végülis úgy fest sinen vagyok.
Olyannyira, hogy lényegében már csak pofásítani kell a programot.
Ezúton is köszönöm a segítséget mindenkinek, főleg Norbinak.
Ha teljesen kész leszek vele elküldöm hátha van ötleted hogyan lehet még javítani rajta.
Az oka amiért olyan egyszerűen írtam le a nyomoromat az egyszerűen azért van mert kb. 2 hete kezdtem el foglalkozni az accessel, tehát előképzetséget ne is várjon tőlem senki..-)
Ehhez képest (hála Norbinak) egész jó lett és bizony a sok logikázás következtében egy csomó minden ragadt rám.
Ha gondolod, nyugodtan küldjél emilt a bajoddal mert nem hiszem, hogy a "<>" jellel wana gond!!
'ha a kombi értéke szám: 1 (Bp), 2 (vidék) Private Sub kombi_AfterUpdate()
Me.Filter="város<>" & kombi
End Sub
'ha a kombi értéke szó: "Budapest", vidék" Private Sub kombi_AfterUpdate()
Me.Filter="város<>' " & kombi & " ' "
End Sub
Vagyis tegyél egy aposztrófot az idézójelek közé.
(most csak a jobb láthatóság miatt tettem szóközt az aposztrófok mellé)
Ara is figyelj, hogy olyat nem lehet, hogy Bp-et egy "B" betű jelzi, a vidéket meg ennek a hiánya, vagyis egy "". (üres mező)
De ha csinálnál egy kontrol-mezőt akkor látnád mi történik: Private Sub kombi_AfterUpdate()
Me.Filter="város<>' " & kombi & " ' "
mezo_kontrol="szűrő: " & Me.Filter & "--" & kombi & "+++" ' vagy egy msgboxot: Msgbox "szűrő: " & Me.Filter & "--" & kombi & "+++" End Sub
És ha mán itt vagyok, leírom legújabb 12 órás szívásom okát és megoldását:
Egy kötetlen segédűrlap rekordforrását (RecordSource) szerettem volna megváltoztatni (kombilistával) de a változtatás után mindíg csak az első rekordot jelenítette meg a segédűrlap. Hiába Requery-ztem meg Recalc-oztam az űrlapokat.
Ha a segédűrlapot külön megnyitottam akkor simán ment a dolog.
Megoldás:
Az Almező/Főmező csatolását is meg kell adni. (bár ezek eddig iss NULL-ok voltak)
segedurlap.Form.RecordSource = "SELECT nevek.kod, nevek.iskola FROM nevek WHERE nevek.iskola=" & kombi01 & ";"
Közben finomítottam a dolgon:
http://free.x3.hu/london2003/adatbazis/szures_kombilista041018.zip
Csináltam egy "szűrés" függvényt amit minden kombilistánál meghívok. Nézd meg!
Az "es_szocska" kezelése is jobb lett.
Amíg fejlesztgeted az űrlapot, csinálj egy "szures_mezo" beviteli mezőt az űrlapfejre. (jó széles legyen!!)
Ebbe kiírathatod az épp aktuális szűrési beállításokat ellenőrzés képpen.
szures_mezo=Me.Filter
Tanár?? :) Ez jó!!!
Azért írok így mert én is kezdő vagyok. (+nagyon ráérek)
Könyvem nekem nincs.
Ha visszaolvasod ezt a topicot vagy az "MS Access - Segíccség kéne, de gyorsan!"
http://forum.index.hu/Article/showArticle?t=9009221
című topicot, és kijegyzeteled belőle a VB kódokat, abból sokat tanulhatsz.
960+2100=3060 hozzászólás. Oldalanként 50 hozzászólással számolva csak 61 oldal.
A város meződ is lehetne kombilista. Csak a sorforrás részben hivatkozzon önmagára.
(order by -al szűröd, hogy minden város csak egyszer szerepeljen)
SELECT tanar.varos FROM tanar GROUP BY tanar.varos ORDER BY tanar.varos;
A "belépésre esemény" meg: kombi_varos.Requery
így mindíg friss lesz a lista.
A város-szűrő meződ is hasonlóan lehet kombilista.
ezt szedd le: http://free.x3.hu/hnorbika/adatbazis/nyelv2.zip Szűrés:
'gyűjtsük össze a szűrési feltételeket: (a zárójeleket is beleírjuk az and miatt)
Példul: "(varos= 'Budapest') and (nyelv1 = 2 Or nyelv2 = 2 Or nyelv3 = 2)"
If kombi_filtervaros = "nincs szűrés" Then
szures1 = ""
Else
szures1 = "(varos= '" & kombi_filtervaros & "') " 'aposztróf közé tesszük mert string
End If
If kombi_nyelv123.Column(1) = "_nincs szűrés" Then
szures2 = ""
Else
szures2 = "(nyelv1 = " & kombi_nyelv123 & " Or nyelv2 = " & kombi_nyelv123 & " Or nyelv3 = " & kombi_nyelv123 & ")"
End If
'...és így tovább
es_szocska1 = " and "
es_szocska2 = " and "
'es_szocska2 = " and "
If Len(szures1) = 0 Or Len(szures2) = 0 Then es_szocska1 = ""
'If Len(szures2) = 0 Or Len(szures3) = 0 Then es_szocska1 = ""
szures = szures1 & es_szocska1 & szures2 '& es_szocska2 & szures3 'és így tovább...
Me.Filter = szures
Me.FilterOn = True
If Len(szures1) = 0 And Len(szures2) = 0 And Len(szures3) = 0 Then Me.FilterOn = False
Kombi listából is és igen/nem jelölőnégyzetet is használnék.
A végcél az lenne, hogy egy űrlapot kitölve egyszerre, egy gombnyomásra történne meg a szűrés.
Pontosítok:
Mezők: Vezetéknév,Keresztnév,Város,Kerület,Cím,Telelefon,E-mail,Nyelv1,Nyelv2,Nyelv3,Szaknyelv1,Szaknyelv2,Szaknyelv3,Tanít e éppen(ez lenne jelöléses), óradíj
Remélem a Filter-t használtad mert az könyebb toldozgatni!!
Amikor egy újabb szűrést akarsz, nézd meg, hogy van-e már egy előző.
és_szocska=""
if len(me.filter)>0 then és_szócska=" and " 'vagy isnull(me.filter)
me.filter=me.filter & és_szócska & szűrési_feltétel
most két lehetőség van:
me.filter="szűrés1 and szűrés2"
vagy ha nem volt előtte szűrés:
me.filter= "" & "" & szűrés2 'vagyis: me.filter="szűrés2"
Délutánra csinálok egy jó kis példaprogit. (már kész a fele)
itt lesz példa a kombilisták különböző lehetőségeire.
Tényleg! Te kombilistából választod ki a szűrési feltételeket????
Olyat tudok, hogy akkor ne pofizzon, ha a mező üres volt a változtatás elött
(ez nem biztos, hogy új rekordot jelent)
csinálsz egy globális változót a VB kód elejére:
Option Compare Database
Dim ujrekord As Boolean
Aztán a mező belépésre eseményébe beírod:
Private Sub mezo1_Enter()
ujrekord = False
If IsNull(mezo1) Then ujrekord = True End Sub
A mező "frissítés után" eseményét pedig kiegészíted:
Private Sub tanar_nev_AfterUpdate()
If ujrekord = False Then If MsgBox("Biztosan módosítod?", vbYesNo) = vbNo Then
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
End If
End If End Sub