Új hozzászólás Aktív témák
-
-
Mutt
senior tag
Hello,
Ezen az oldalon megtalálod az infót ehhez.
Röviden.
1. A report-nak a láblécében felveszel egy új mezőt. pl. tOldalOsszege
2. Berakod ezt a makrót.
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
If PrintCount = 1 Then
tOldalOsszege= tOldalOsszege+ Br_ár
End If
End Sub
Private Sub PageHeaderSection_Print(Cancel As Integer, PrintCount As Integer)
tOldalOsszege= 0
End Subüdv.
-
Mutt
senior tag
Hello,
...1 mezőjéhez olyan tulajdonság kellene, hogy ha létezik már akkor az általam írt üzenettel térjen vissza, mondjuk úgy mint ahogy az érvényességi szabálynál szokott...
VBA-val megoldható, pl. a mező Exit eseményére kell tenni a DCOUNT függvényt, vhogy így:
If DCount("[ShipName]", "Orders", "ShipName = '" & Input & "'") > 0 then
Msgbox "Saját üzi"
Input.Value = ""
End IfA példában az Orders táblában a ShipName -ek között keressük meg az űrlapon az Input mezőben található értéket.
üdv.
-
Mutt
senior tag
Hogy teljes legyen a kép és profibb legyen a megoldás esetleg hozz létre egy táblát az adatbázisban amelyben a UserID-k és a jogosultságok vannak felsorolva.
Íme egy példa, a tábla neve legyen tblUsers és legyenek benne a UserID és Role mezők.
A Role mezőben pl. számokkal jelölöd a különböző jogosultsági szinteket.UserID Role
Zoli 1
Pista 99
Admin 99Ezek után a Form_Load()-ba ha ezt teszed:
Select Case DLookup("Role", "tblUsers", "UserID = '" & Environ("UserName") & "'")
Case 1
--alapfelhasználók beállításai
Case 99
--adminok beállításai, célszerűen csak nekik legyen a tblUsers-hez hozzáférése.
Case Else
--mindent letiltasz
End SelectAkkor elég csak a táblán keresztül megadni a felhasználónak a jogosultságot és már azonnal tudja is használni, nem kell a kódot minden egyes új felhasználó esetén módosítani, elég csak új csoportoknál javítani.
üdv.
-
Mutt
senior tag
válasz
Mr.Csizmás
#832
üzenetére
Hello,
...adott a cégnél ~40 ember, akinek a különféle dolgait...
Személyes adatokra a Address book database sablon egész jónak tűnik.
Az Asset tracking database sablonból is tudsz meríteni, vagy kiegészíteni a kívánalmaknak.
üdv.
-
Mutt
senior tag
Hello,
...a backup copyt ne ugyanabba a mappába mentse, ahol az adatbázis van, hanem mondjuk egy azon belüli "Backup" almappába...
Ezzel menni fog, ha más mappa nevet akarsz akkor az ArchivePath konstanst változtasd meg.
Private Sub bImport_Click()
Dim dbPath As String
Dim CurrentFile
Dim CurrentName As String
Dim CurrentExtension As String
Dim BackupName As String
Dim fs As Object
'alkönyvtár neve
Const ArchivePath As String = "\Backup"
'aktuális könyvtár
dbPath = CurrentProject.Path
CurrentFile = Split(CurrentProject.Name, ".")
'aktuális fájlkiterjesztés
CurrentExtension = CurrentFile(UBound(CurrentFile))
'aktuális fájlnév
CurrentName = Left(CurrentProject.Name, Len(CurrentProject.Name) - Len(CurrentExtension) - 1)
'új fájlnév
BackupName = "Backup_" & CurrentName & "_" & Format(Date, "YYYYMMDD") & "." & CurrentExtension
'másolat készítése
If MsgBox("Do you want to make a compacted back-up copy of this database named " & vbCrLf & "'" & BackupName & "'", vbYesNo, "Continue") = vbYes Then
'ha nem létezik a célkönyvtár akkor létrehozzuk
If Dir(dbPath & ArchivePath, vbDirectory) = Empty Then MkDir (dbPath & ArchivePath)
'ha még nem létezik a célkönyvtárban azonos névvel fájl létrehozzuk
If Dir(dbPath & ArchivePath & "\" & BackupName) = Empty Then
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile dbPath & "\" & CurrentProject.Name, dbPath & ArchivePath & "\" & BackupName
Set fs = Nothing
Else
MsgBox "File already exists!", vbOKOnly, "Error"
End If
End If
End Sub...nem debug.txt alapján szeretném kiosztani a jogokat, hanem mondjuk userid alapján...
Az Environ("UserName") visszaadja az aktuális felhasználó nevét Windowsban.
A név alapján pedig már tudod befolyásolni, hogy ki mely gombokat láthassa.Érdemes a Form_Load() eventbe tenni vmi ilyet:
Select Case Environ("UserName")
Case "Zoli"
--lista hogy mely elemeket láthatók neki, pl. bUnLock.Visible = True
Case "Tibi"
--másik felhasználó listája
Case Else
bUnLock.Visible = False
End Selectüdv.
-
Mutt
senior tag
Hello,
bocs az még hozzá lenne, hogy azt hol állítom be ha törlök akkor a hozzá kapcsolódó adatok is törlődjenek...
1. Ha a két táblát úgy kötöd össze, hogy a kulcsmezőt bal klikkel ráhúzod a külső kulcsra a másik táblában Query Design-ban. A létrejött kapcsolatra duplán kattintva kapsz egy menüt (Edit relationship), ahol alul be tudod állítani ezt. Angolban "Cascade Delete Related Records" opció.
2. Ha már korábban definiálva lettek a kapcsolatok, akkor a Database Tools menűben kell a kapcsolaton az "Edit relationship"-et használni.Youtube video.
"Kapcsolja össze a két adattáblát úgy, hogy a táblák összes rekordja részt vegyen a kapcsolatban!"
Ezen adatok alapján nekem egy sima UNION-nak tűnik, ami pont úgy műkődik mint a SQL-ben, vagyisselect1
UNION
select2;
A feltételek ugyanazok itt is, vagyis az oszlopok száma és a típusa meg kell hogy egyezzen.
Access-ben UNION-t úgy tudsz egyszerűen írni, hogy létrehozod külön-külön a lekérdezéseket, majd átmész SQL nézetbe és az első lekérdezésben kitörlöd a lekérdezés végéről a pontosvesszöt, majd beírod hogy UNION és bemásolod a második lekérdezést.Ha a két táblában van közös mező, amelyekkel tudsz kapcsolatot létrehozni, akkor:
- inner join esetén mindkét táblából csak azok az értékek fognak megjelenni, ahol a mezők egyeznek
- outer join esetén választhatsz hogy a bal vagy jobb oldali tábla összes eleme és a másik táblából csak az egyező elemek jelenjenek meg.
Ezen opciók valamelyikét a kapcsolatra kattintva tudod beállítani.
Ez esetben azonban az összes rekord nem fog résztvenni, csak azon rekordok amelyekre a kapcsolati beállítások igazak.üdv.
-
Mutt
senior tag
Hello,
- azt szeretném hogy ha vki megnyitja ezt az adatbázist, akkor pl csak az űrlap jelenjen meg, egyéb gombok, vagy az oldalsáv menű le legyen tiltva, ne lehessen szerkeszteni. Ezt hogy tudom beállítani ? Akár a struktúra jelszavas védelmére is gondoltam, admin jogok beállítása pl
Ezen a linken van egy jó cikk arról, hogy hogyan lehet lekorlátozni a hozzáférést.
A lényeg, hogy az adatbázis tulajdonságait lehet módosítani VBA-ban:
StartupShowDBWindow - ki/be lehet kapcsolni a navigation pane-t
AllowBuiltinToolbars - el lehet rejteni az alap eszköztárat
AllowBypassKey - letiltja hogy az automatikusan induló makrókat nem lehet SHIFT-el megkerülni
AllowBreakIntoCode - progamkód hiba esetén nem nyitja meg a VB szerkesztőt
AllowFullMenus - nem jelenik meg a menű tábla, lekérdezés stb. módosításához
AllowToolbarChanges - le lehet tiltani az eszköztár testreszabását
AllowSpecialKeys - fontos gyors billentyűket tilt leFontos, hogy legyen mentésed az adatbázisrül mert kizárhatod magad!
Én úgy használom, hogy létrehozok egy formot (többnyire Start Page), amire kirakom a gombokat amikkel
lehet a lekérdezéseket, űrlapokat, táblákat stb. elindítani. A File -> Options -> Current Database alatt
beállítom, hogy a "Start Page" form nyíljon meg automatikusan.Ezen a formon van egy "Lock Database" és egy "Unlock Database" gomb, mindkettő alapból el van rejtve.
És csak adott feltételek (pl. ha egy adott felhasználó vagy fájl - debug.txt - létezésekor) lesznek láthatók.pl. debug.txt fájl esetén így
Private Sub Form_Open(Cancel As Integer)
If Dir(CurrentProject.Path & "\debug.txt") = "debug.txt" Then
bLock.Visible = True
bUnLock.Visible = True
End If
End SubA gombokra pedig ezen kódok vannak:
Private Sub bLock_Click()
ChangeProperty "StartupShowDBWindow", dbBoolean, False
ChangeProperty "AllowBuiltinToolbars", dbBoolean, False
ChangeProperty "AllowFullMenus", dbBoolean, False
ChangeProperty "AllowToolbarChanges", dbBoolean, False
ChangeProperty "AllowBreakIntoCode", dbBoolean, False
ChangeProperty "AllowSpecialKeys", dbBoolean, False
ChangeProperty "AllowBypassKey", dbBoolean, False
Application.SetOption "Show Hidden Objects", False
End Sub
Private Sub bUnLock_Click()
ChangeProperty "StartupMenuBar", dbText, "(default)"
ChangeProperty "StartupShowDBWindow", dbBoolean, True
ChangeProperty "StartupShowStatusBar", dbBoolean, True
ChangeProperty "AllowBuiltinToolbars", dbBoolean, True
ChangeProperty "AllowFullMenus", dbBoolean, True
ChangeProperty "AllowToolbarChanges", dbBoolean, True
ChangeProperty "AllowBreakIntoCode", dbBoolean, True
ChangeProperty "AllowSpecialKeys", dbBoolean, True
ChangeProperty "AllowBypassKey", dbBoolean, True
ChangeProperty "NavPane Closed", dbBoolean, True
End SubA fentiek az alábbi függvényt hívják meg:
Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer
Dim dbs As Database, prp As Property
Dim CurrentPropVal As Variant
Const conPropNotFoundError = 3270
Set dbs = CurrentDb
On Error GoTo Change_Err
CurrentPropVal = dbs.Properties(strPropName)
If CurrentPropVal <> varPropValue Then
dbs.Properties(strPropName) = varPropValue
End If
ChangeProperty = True
Change_Bye:
Exit Function
Change_Err:
If Err = conPropNotFoundError Then 'Property not found.
Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)
dbs.Properties.Append prp
Resume Next
Else
' Unknown error.
ChangeProperty = False
Resume Change_Bye
End If
End Function- mennyire bonyolult egy olyan makrót írni egy adott vezérlőgombra, ami az előző havi adatokat beimportálja excelbe, és automatikusan elkészíti rá a pivot táblát ?
Ha importálni akarsz Excel fájlból Access-be, akkor a TransferSpreadhseet-et használd:
pl.
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Imported", CurrentProject.Path & "\adatok.xls", TrueHa exportálni akarsz Excel-be akkor hasonló a fentihez csak acExport változatban, azonban miért nem linkeled be Excel-be (Data fül -> Connections) az adatbázis tábláját, készíted el a Pivot-ot és állítod be mindkettőt automatikus frissítésre megnyitáskor?
-jó lenne, ha mondjuk ennek a makrünak futtatása előtt a progi automatikusan készítene egy biztonsági másolatot az adatbázisról egy emgadott hálózati mappába
Ezen a linken van egy tökéletes megoldás.
üdv
-
Mutt
senior tag
Hello,
Feltételezem hogy van egy tábla (tblData), ahova kell mentened az űrlapon lévő dolgokat (amelyek legyen vInput1, vInput2, stb.). A gomb neve meg bAdd. A lekérdezés pedig "Lekérdezés"
VBA kódban vmi hasonló kell neked, de ezen még finomítanod kell:
Private Sub bAdd_Click()
Dim uSQL As String
DoCmd.SetWarnings False
'adatok mentése kezdet
If Me.vInput1 <> "" and Me.vInput2 <> "" Then
uSQL = "INSERT INTO tblData VALUES ("
uSQL = uSQL & Me.vInput1 & ",'"
uSQL = uSQL & Me.vInput2 & "')"
CurrentDb.Execute uSQL
Else
Msgbox "Nincs adat megadva"
End If
'adatok mentése vég
'adatok kiürítése kezdet
Me.vInput1 = ""
Me.vInput2 = ""
DoCmd.GoToControl Me.vInput1 'első beviteli mezőre ugrás
'adatok kiürítése vég
'lekérdezés futtatása kezdet
DoCmd.OpenQuery "Lekérdezés" 'ha látni akarod az eredményét
CurrentDB.Execute "Lekérdezés" 'ha nem akarod látni, csak lefuttatni
'lekérdezés futtatása vég
DoCmd.SetWarnings True
End Subüdv
Új hozzászólás Aktív témák
- Mindenféle könyves (és olvasós) Off topic
- Google Pixel 10a – évismétlés
- Hegesztés topic
- Manjaro Linux
- Kész rémálom lesz Linuxot használni jövőre az USA egyes államaiban
- ASUS RT-AC68U
- Kerékpárosok, bringások ide!
- Napelem
- Kertészet, mezőgazdaság topik
- Samsung Galaxy Buds3 Pro - szárat eresztettek a babok
- További aktív témák...
- Fallout 4 Pip-Boy Edition eladó
- MEGA AKCIÓ! - Jogtiszta Windows - Office & Autodesk & CorelDRAW - Azonnal - Számlával - Garanciával
- PC Játékok
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- BESZÁMÍTÁS! Sony PlayStation 4 PRO 1TB fekete játékkonzol extrákkal garanciával hibátlan működéssel
- BESZÁMÍTÁS! Inno3D iChill X3 RTX 3080 Ti 12GB videokártya garanciával hibátlan működéssel
- HIBÁTLAN iPhone 13 128GB Blue-1 ÉV GARANCIA - Kártyafüggetlen, MS4453, 100% Akksi
- ÚJ AKCIÓS HP EliteBook 6 G1a Ryzen 5 PRO 230 16GB DDR5 512GB FHD+ 16:10 már jobbik kijelző, gar 2028
- PlayStation 5 FAT DIGITAL + kontroller 6 hó garancia, számlával!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

