You are on page 1of 42

ACCESS DATABASE TIPS AND HELP TABLE of CONTENTS

SET FOCUS OF FIRST FIELD........................................3 LOCK DATABASE..........................................................3 UNLOCK DATABASE.....................................................3 CLOSE A WINDOW:........................................................6 OPEN WINDOWS MEDIA PLAYER WITH A SONG:....6 HOW TO TURN MUSIC ON OR OFF..............................7 INSERT FLASH IN A WEB PAGE..................................8 REDIRECT A WEB PAGE.............................................10 GET USER LOGIN NAME.............................................11 SERIOUS ERROR ACROBAT PDFMAKER ADDIN 12 VERIFY THAT RECORDS DONT ALREADY EXIST..13 SEND EMAIL FROM ACCESS.....................................15 PROGRESS METER AND CHECK BOXES - DATAPIG .........................................................................................21

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 1

STOP USER FROM CLOSING APP - DATAPIG.........25 ROTATE PICTURES OR TEXT.....................................26 OPEN INTERNET EXPLORER WINDOW WITH NO MENUS...........................................................................28 CHECK TO SEE IF TABLE EXISTS.............................29 UPDATE IMPORT WITH CURRENT DATE.................30 CALL THE STANDARD WINDOWS FILE OPEN/SAVE DIALOG BOX.................................................................31 HIGHLIGHTING SEARCH MATCHES IN ACCESS 2007................................................................................38 FIND CHARACTER INSTRING..................................40 ADD FIELD TO TABLE.................................................40 CONVERT TO SENTENCE CASE................................41 CODE TO SPECIFY REPORT VIA MSGBOX..............41 DATEDIFF SOLUTIONS................................................42

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 2

SET FOCUS OF FIRST FIELD


Thanks for your attention to my post. Here's what I put in the html, and it works! onload="FrontPage_Form1.FullName_.focus();" Thanks again, Gus "Jon Spivey" wrote: > > > > > > > > > > > > > > > > > > > Hi Gus, <body onload="document.forms[0].fields[0].focus();"> -Cheers, Jon Microsoft MVP "mscomdex" <mscomdex@discussions.microsoft.com> wrote in message news:1626BDA9-BD86-4DCF-AE18-9A5C44203466@microsoft.com... > hi: > I've been unable to set the first field when a FP page with a form loads. > How can I do this? > Appreciate any help. > Cheers, > Gus

>

LOCK DATABASE
ChangePropertyDdl "AllowBypassKey", dbBoolean, True

UNLOCK DATABASE

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 3

The shift bypass key works in all versions of Access that I can remember (which is back to Access 95), so if it's not currently working, then someone has disabled it. Unless that someone also implemented User-Level Security, then you can re-enable the shift bypass key by opening the Immediate Window and typing the following: CurrentDb.Properties.Delete "AllowBypassKey" . . . and then pressing the <ENTER> key. Close the database and reopen it again by holding the <SHIFT> key down until the database is completely open. All of the startup options will be ignored and your tables will be visible in the Database Window. EXPLANATION: See: http://www.mvps.org/access/general/gen0040.htm
Select the Macro tab on the database window. If there is a macro named AutoKeys click on it and then click on Design, otherwise click New (and save it with the name AutoKeys). Under the Macro Name column, enter the key code combination that you want to use for the backdoor, select RunCode in the Action column and the name of your VBA function procedure in the property in the lower part of the window. For more details see AutoKeys in Help. Don't worry about becoming faniliar with macros. I use only one or two macros, AutoKeys and sometimes AutoExec. -Marsh MVP [MS Access] XP wrote: >I like your idea; can you help me out with how to set up and trap the key combination and fire the code? - I've never worked with Access Macros, but I have coded a lot. Thanks. >"Marshall Barton" wrote: >> XP wrote: >> >In Office 2003, I have noticed through examination of the [Tools] [Startup] >> >dialog box that many of the basic controls can be turned off; I like the flexibility of being able to control the interface, but is there a list of keyboard shortcuts or other info for regaining these controls? I don't want to lock myself out of my own DB by disabling all the standard GUIs, but at some point you want to test your DBs appearance and then get back in to tweak it. How do the pro's handle this? >> >> >> I kind of bail out on this by just creating a VBA procedure that turns thing on (show db window, unhide tool/menu bars, ?). Then use an AutoKey macro on an obscure key combination (Ctrl+shift+F7) to run the procedure. >> >> Don't forget that changing the AllowBypassKey (shift key) option won't take effect until the next time the db is opened.

Second Thread:
Put the code in the Load event of the form that opens when you open the app. -Dave Hargis, Microsoft Access MVP "Fuad" wrote: > OK, Dave. So then where did you place your code to activate it after the user > logged in by his own ID (or password). And you seem to have used CurrenUser > property to identify the logged user... > > --

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 4

> Regards, > Fuad > > > "Klatuu" wrote: > > > I did this once by indentifying a specific user in the code. If that user > > logged in, the code would unlock the bypass key. That is the ony thing I > > used that user ID for. >> > > So to get into the app, log on as the secret user, close the app, then open > > it again with the shift key down. >> > > -> > Dave Hargis, Microsoft Access MVP >> >> > > "Fuad" wrote: >> > > > Thank you very much, Rick. I really misunderstood the usage of this code. And > > > last one: does running of the enhanced code that Alex recommended mean that > > > only admin will be able to re-enable the by pass key by the method of running > > > code "from obscure location in the app" as you stated, i.e. application can > > > be considered to be fully "locked" for other users. And could you please just > > > shortly describe the way of the running this code from obscure location. > > > Sorry for annoying you with details, it's first time I do these security > > > things and am absolutely weak on that. >>> > > > Thanks. >>> >>> > > > -> > > Regards, > > > Fuad >>> >>> > > > "Rick Brandt" wrote: >>> > > > > Fuad wrote: > > > > > Hello Guys, >>>>> > > > > > Could anyone help me with the following issue: > > > > > I've created a database and secured it thru the user-level security > > > > > wizard by creating a updates group with password. And certainly > > > > > myself is in admin group. > > > > > I need a code or autoexec file which would enable/disable > > > > > AllowByPassKey property of the database so that only admin group can > > > > > ignore the startup setting by pressing Shift+Enter, but no updates > > > > > group users. And could you please also advise where should I place > > > > > this code if available. >>>>> > > > > > Thanks. >>>> > > > > You misunderstand how that code works. You need to run it exactly once and it > > > > takes effect the NEXT time you open the file (and every time after that). There > > > > is no need to run it every time and there is no way to make it "kick-in" for the > > > > current session. >>>> > > > > So... you leave the bypass key enabled on your development copy of the file and > > > > you run the code once on the distribution copy just before sending it out to > > > > your users. >>>> > > > > If you want to occassionally gain full access to a distributed copy then you can > > > > run code from some obscure location in the app that re-enables the bypass key. >>>> > > > > -> > > > Rick Brandt, Microsoft Access MVP > > > > Email (as appropriate) to... > > > > RBrandt at Hunter dot com

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 5

CLOSE A WINDOW:
<a href="javascript:window.close();">Close Window</a>

Open Windows Media Player with a song:


<object id="MediaPlayer" width=320 height=286 classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" standby="Loading Microsoft&#8218; Windows&#8218; Media Player components..." type="application/x-oleobject" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7 ,1112"> <param name="filename" VALUE="http://199.237.237.56/music/Floating%20Aire%20-%20Ron %20Hoover.mp3"> <param name="autoStart" VALUE="true"> <param name="showControls" VALUE="true"> <param name="ShowStatusBar" value="true"> <param name="Autorewind" VALUE="true"> <param name="ShowDisplay" VALUE="false"> <embed src="http://199.237.237.56/music/Floating%20Aire%20-%20Ron%20Hoover.mp3" WIDTH=320 HEIGHT=286 type="application/x-mplayer2" name=MediaPlayer autostart=1 showcontrols=0 showstatusbar=1 autorewind=1 showdisplay=0> </embed></object>

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 6

HOW TO TURN MUSIC ON OR OFF


"islandjohnny" <islandjohnny@discussions.microsoft.com> wrote in message news:0FDC774E-3329-4ED4-B83D-373EC352A25C@microsoft.com... >I saw a web site that with a click of the mouse on a graphic, it either > turned on background music, or turned it off. I was wondering if Frontpage > 2003 offered that feature and if do, how? FrontPage itself does not, but here is some simple code to do it Insert this code, using Code or HTML view, where you want the button: <span id="sound"></span> <input type="button" value="Play/Stop&#10;Music" onclick="playSound('audio/minuet.mid')"/> Insert this JavaScript, using Code or HTML view, between <head> and </head>: <script type="text/javascript"> function playSound(fname) { var x = document.getElementById("sound") x.innerHTML = (!x.innerHTML ) ? '<embed src="' + fname + '" loop=false autostart=true hidden>' : '' } </script> The function will play or stop the music on alternate clicks. Notes: 1. Change the name of the file in "playSound('audio/minuet.mid')" to your file 2. Some of the quotes are single and some are double. Just cut and paste the code above to get it right. ---Trevor Lawrence Canberra Microsoft MVP - FrontPage MVP Web Site http://trevorl.mvps.org

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 7

Insert Flash in a Web Page


From site: http://www.femmefauxtales.com/ <HTML> <HEAD> <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1"> <meta name="keywords" content="faux painting, faux painters, faux techniques, faux artists, decorative painting, painting techniques, textured painting, color, paint, color washing, parchment, tuscan wash, venetian plaster, lime wash, strie, gold leaf, decorative walls, decorative furniture, antiquing, distressing, wall designs, faux stone, stone effects, faux marble, stenciling, faux wood, ragging, flogging, sponging, stippling, spattering, venetian Plaster, faux painting, faux painters, faux techniques, faux artists, decorative painting, painting techniques, textured painting, color, paint, tuscan wash, color washing, parchment, ragging, sponging, faux painting, faux painters, faux techniques, faux artists, decorative painting, painting techniques, textured painting, color, paint, lime wash, faux painting, faux painters, faux techniques, faux artists, decorative painting, painting techniques, textured painting, color, paint, strie, dragging, flogging, faux painting, faux painters, faux techniques, faux artists, decorative painting, painting techniques, textured painting, color, paint, gold leaf, decorative furniture, antiquing, distressing, decorative cabinets, faux stone, stone effects, faux marble, marbling, stenciling, faux wood, stippling, spattering, faux painting, faux painters, faux techniques, faux artists, decorative painting, painting techniques, textured painting, color, paint" /> <meta name="description" content="" /> <TITLE>Femme FAUXtales</TITLE> <script language="JavaScript"> // This is only needed for Netscape browsers. function flashGetHref() { return location.href; } function flashPutHref(href) { location.href = href; } function flashGetTitle() { return document.title; } function flashPutTitle(title) { document.title = title; } </script> </HEAD> <BODY bgcolor="#000000"> <!-- URL's used in the movie--> <!-- text used in the movie--> <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version =6,0,0,0" WIDTH="100%" HEIGHT="100%" id="femmefauxtales" ALIGN=""> <PARAM NAME=movie VALUE="femmefauxtales.swf"> <PARAM NAME=loop VALUE=false> <PARAM NAME=menu VALUE=false> <PARAM NAME=quality VALUE=high> <PARAM NAME=wmode VALUE=transparent> <PARAM NAME=bgcolor VALUE=#000000> <EMBED src="femmefauxtales.swf" loop=false menu=false quality=high wmode=transparent bgcolor=#000000 WIDTH="100%" HEIGHT="100%" NAME="femmefauxtales" ALIGN="" swLiveConnect=true

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 8

TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED> </OBJECT> <!-- Bookmarks used in the movie--> </BODY> </HTML>

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 9

Redirect a Web Page


1. 2. 3. 4. 5. 6.
In Page view, at the bottom of the document window, click Desi gn Click the Custom tab. Under System variables (HTTP- EQUIV) , click Add . In the Name box, type . Right-click the page, and then click Page Properti es on the shortcut menu.

REFRESH.

In the Value box, type the following:

x; URL=http://xyz.com
Where x equals the number of seconds before the redirection takes place, and xyz.com equals the page to which you want to redirect the current page.

7.

Click OK .

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 10

GET USER LOGIN NAME


API: Get Login name
(Q) How do I retrieve the UserName with which the user is logged into the network? (A) Paste the following code in a new module and call the function fOSUserName. Author(s) Dev Ashish

'******************** Code Start ************************** ' This code was originally written by Dev Ashish. ' It is not to be altered or distributed, ' except as part of an application. ' You are free to use it in any application, ' provided the copyright notice is left unchanged. ' ' Code Courtesy of ' Dev Ashish ' Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _ "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Function fOSUserName() As String ' Returns the network login name Dim lngLen As Long, lngX As Long Dim strUserName As String strUserName = String$(254, 0) lngLen = 255 lngX = apiGetUserName(strUserName, lngLen) If ( lngX > 0 ) Then fOSUserName = Left$(strUserName, lngLen - 1) Else fOSUserName = vbNullString End If End Function '******************** Code End **************************

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 11

Serious Error Acrobat pdfmaker addin

Possible Answer from Microsoft Discussion Groups:


Roger This might be caused by fragmented code. After backing up the file, run a decompile on the database. Use a run command starting with your Access exe similar to this: "C:\Program Files\Microsoft Office\Office11\msaccess.exe" /decompile "K:\Budget\Database Project\Budget-Requisition-09 Pgm.mdb" This will strip out any code fragments. Compact the db, compile and close. You should see quite a decrease in file size. Re-open it the regular way. -Bill Mosca, MS Access MVP ================================================== Also worth checking out: How to keep a Jet 4.0 database in top working condition http://support.microsoft.com/?id=303528 Make sure to follow these three links, as a minimum: Verify that the latest operating system service pack is installed Verify that the latest Microsoft Jet service pack is installed Verify that the latest service pack for your version of Office is installed Good Luck!

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 12

VERIFY THAT RECORDS DONT ALREADY EXIST


Bill Herrick" <Bill Herrick@discussions.microsoft.com> wrote in message news:3E7A3C02-DA45-4123-A44A-65E4415994EC@microsoft.com... > I'm adding records to a table from a text file and need to verify that > records from this file don't already exist in the table. Insurance against > multiple imports. > > A multiple-field index named EERecordIndex (strEEId, strJCID, > ShortWrkDate, > intDataType - an employee can work on one job on one date) exists and I'm > trying to use it for comparison, but the rec.Seek code throws a 3019 > error > Operation invalid without a current index. > > The code I'm using follows. What am I doing wrong? > > Dim db As DAO.Database > Dim rec As DAO.Recordset > > Set db = CurrentDb() > Set rec = db.OpenRecordset("tblPRDailyEarnTrans", dbOpenTable) > rec.Index = EERecordIndex > > With rec > > rec.Seek "=", strEEId, strJCID, ShortWrkDate, intDTP (strEEId, > strJCID, > ShortWrkDate, intDTP are the input field names) > > If rec.NoMatch Then > process the update > else > don't > end if > > end with Unless you've defined a string variable or constant named "EERecordIndex", I think this line: > rec.Index = EERecordIndex ... should be: rec.Index = "EERecordIndex" That is, the name of the index should be specified as a string. Do you have Option Explicit set, to catch the use of undefined variables? -Dirk Goldgar, MS Access MVP www.datagnostics.com

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 13

(please reply to the newsgroup) Was this

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 14

SEND EMAIL FROM ACCESS


From datapigtechnology.com
A. BASIC FORM Create a MACRO: SendMyEmail

Create a form that calls the macro on the event: on click. Saved as Form2

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 15

Macro will associate with mail program (Outlook) will ask for permission

Select YES, and it outputs email to the two addresses entered in the macro.

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 16

B. Send Each Employee a report

Create table with email addresses

STEPS: Create Macro Convert previous macro to Visual Basic

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 17

see next for continuation:

Modiy Form2 by adding 2 text boxes

Go to SendMyEmail Macro: The email addresses are hard coded and we want to replace them with CODE for each email in the Email Address table:

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 18

Replace hard coded email from the text box on the form that has the email addresses, Form 2

Change query that is called by the form so it only brings up the orders for the employee that is on the form2 text box

Outlook will ask for your permission to send EACH RECORD. Express Click YES from Contest Magic will automatically enter YES for each record.

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 19

### End of Send Mail from Access

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 20

Progress Meter and Check Boxes - Datapig

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 21

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 22

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 23

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 24

Stop User From Closing App - Datapig

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 25

Rotate Pictures or text


Source: http://ncthakur.itgo.com/js08.htm Copy between the HEAD tags:
<script language="JavaScript1.2"> /* Rotating image or text(You can use for changing banners) Author: Narayan Chand Thakur Source: http://ncthakur.itgo.com/ This may be used freely as long as this message is intact. */ <!-//you may add your image file or text below var item=new Array() item[0]="<a href='#'><img src='ballon2.gif' border='0'></a>" item[1]="<a href='#'><img src='ballon3.gif' border='0'></a>" item[2]="<a href='#'><img src='ballon4.gif' border='0'></a>" item[3]="<strong><font face='arial' size='4' color='red'>Text without a Link!</font></strong>" item[4]="<a href='#'><font face='arial' size='4' color='darkgreen'><B>This text has Link</B></font></a>" item[5]="<a href='#'><font face='arial' size='4' color='darkgreen'><B>How do you like that?</B></font></a>" var current=0 var ns6=document.getElementById&&!document.all function changeItem(){ if(document.layers){ document.layer1.document.write(item[current]) document.layer1.document.close() } if(ns6)document.getElementById("div1").innerHTML=item[current] { if(document.all){ div1.innerHTML=item[current] } } if (current==5) current=0 else current++ setTimeout("changeItem()",2000) } window.onload=changeItem //--> </script>

CONTINUED ON NEXT PAGE...

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 26

Copy and place the following texts into the BODY tags:
<layer id="layer1" left="210" top="250" ></layer> <div id="div1" style="position:absolute;left:210;top:250"> </div>

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 27

Open Internet Explorer Window with no Menus


At the top of the page between the HEAD tags enter the following script code: <SCRIPT LANGUAGE='JAVASCRIPT' TYPE='TEXT/JAVASCRIPT'> <!-/**************************************************** AUTHOR: WWW.CGISCRIPT.NET, LLC URL: http://www.cgiscript.net Use the code for FREE but leave this message intact. Download your FREE CGI/Perl Scripts today! ( http://www.cgiscript.net/scripts.htm ) ****************************************************/ var win=null; function NewWindow(mypage,myname,w,h,pos,infocus){ if(pos=="random"){myleft=(screen.width)?Math.floor(Math.random()*(screen.widthw)):100;mytop=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;} if(pos=="center"){myleft=(screen.width)?(screen.width-w)/2:100;mytop=(screen.height)? (screen.height-h)/2:100;} else if((pos!='center' && pos!="random") || pos==null){myleft=0;mytop=20} settings="width=" + w + ",height=" + h + ",top=" + mytop + ",left=" + myleft + ",scrollbars=no,location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no";wi n=window.open(mypage,myname,settings); win.focus();} // --> </script>

In the place on the page where you want the link insert: <a href="javascript:NewWindow('http://mymetro/its/newits/page/9210Management_Org_Chart.html','9210OrgWin','800','278', 'center','front');">Business Systems Organization Chart</a>

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 28

Check to see if Table Exists


Function TableExists(TableName) As Boolean If IsNull(DLookup("[Name]", "MsysObjects", _ "[Type] In (1,4,6) " & _ "And [Name] ='" & TableName & "'")) Then TableExists = False Else TableExists = True End If End Function Use it like: If TableExists("TBL_CUSTOMERS") Then code End If

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 29

Update Import With Current Date


CurrentDB.Execute "UPDATE MyTable SET TimeStamp = Now() WHERE TimeStamp IS NULL;", dbFailOnError

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 30

Author(s)

Call the standard Windows File Open/Save dialog box

Ken Getz

This can be done by either using the Common Dialog Control in Access 97 or by using the APIs defined for this purpose. To call the actual dialog from your code, see the included function TestIt() within the module or use the following example as a guideline and
Dim strFilter As String Dim strInputFileName as string strFilter = ahtAddFilterItem(strFilter, "Excel Files (*.XLS)", "*.XLS") strInputFileName = ahtCommonFileOpenSave( _ Filter:=strFilter, OpenFile:=True, _ DialogTitle:="Please select an input file...", _ Flags:=ahtOFN_HIDEREADONLY)

Note that in order to call the Save As dialog box, you can use the same wrapper function by just setting the OpenFile option as False. For example,
'Ask for SaveFileName strFilter = ahtAddFilterItem(myStrFilter, "Excel Files (*.xls)", "*.xls") strSaveFileName = ahtCommonFileOpenSave( _ OpenFile:=False, _ Filter:=strFilter, _ Flags:=ahtOFN_OVERWRITEPROMPT Or ahtOFN_READONLY)

'***************** Code Start ************** ' This code was originally written by Ken Getz. ' It is not to be altered or distributed, 'except as part of an application. ' You are free to use it in any application, ' provided the copyright notice is left unchanged. ' ' Code originally courtesy of: ' Microsoft Access 95 How-To ' Ken Getz and Paul Litwin ' Waite Group Press, 1996 ' Revised to support multiple files: ' 28 December 2007 Type tagOPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long strFilter As String strCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long strFile As String nMaxFile As Long strFileTitle As String

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 31

nMaxFileTitle As Long strInitialDir As String strTitle As String Flags As Long nFileOffset As Integer nFileExtension As Integer strDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type Declare Function aht_apiGetOpenFileName Lib "comdlg32.dll" _ Alias "GetOpenFileNameA" (OFN As tagOPENFILENAME) As Boolean Declare Function aht_apiGetSaveFileName Lib "comdlg32.dll" _ Alias "GetSaveFileNameA" (OFN As tagOPENFILENAME) As Boolean Declare Function CommDlgExtendedError Lib "comdlg32.dll" () As Long Global Const ahtOFN_READONLY = &H1 Global Const ahtOFN_OVERWRITEPROMPT = &H2 Global Const ahtOFN_HIDEREADONLY = &H4 Global Const ahtOFN_NOCHANGEDIR = &H8 Global Const ahtOFN_SHOWHELP = &H10 ' You won't use these. 'Global Const ahtOFN_ENABLEHOOK = &H20 'Global Const ahtOFN_ENABLETEMPLATE = &H40 'Global Const ahtOFN_ENABLETEMPLATEHANDLE = &H80 Global Const ahtOFN_NOVALIDATE = &H100 Global Const ahtOFN_ALLOWMULTISELECT = &H200 Global Const ahtOFN_EXTENSIONDIFFERENT = &H400 Global Const ahtOFN_PATHMUSTEXIST = &H800 Global Const ahtOFN_FILEMUSTEXIST = &H1000 Global Const ahtOFN_CREATEPROMPT = &H2000 Global Const ahtOFN_SHAREAWARE = &H4000 Global Const ahtOFN_NOREADONLYRETURN = &H8000 Global Const ahtOFN_NOTESTFILECREATE = &H10000 Global Const ahtOFN_NONETWORKBUTTON = &H20000 Global Const ahtOFN_NOLONGNAMES = &H40000 ' New for Windows 95 Global Const ahtOFN_EXPLORER = &H80000 Global Const ahtOFN_NODEREFERENCELINKS = &H100000 Global Const ahtOFN_LONGNAMES = &H200000 Function TestIt() Dim strFilter As String Dim lngFlags As Long strFilter = ahtAddFilterItem(strFilter, "*.MDA;*.MDB") strFilter = ahtAddFilterItem(strFilter, strFilter = ahtAddFilterItem(strFilter, strFilter = ahtAddFilterItem(strFilter,

"Access Files (*.mda, *.mdb)", _ "dBASE Files (*.dbf)", "*.DBF") "Text Files (*.txt)", "*.TXT") "All Files (*.*)", "*.*")

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 32

' Uncomment this line to try the example ' allowing multiple file names: ' lngFlags = ahtOFN_ALLOWMULTISELECT Or ahtOFN_EXPLORER Dim result As Variant result = ahtCommonFileOpenSave(InitialDir:="C:\", _ Filter:=strFilter, FilterIndex:=3, Flags:=lngFlags, _ DialogTitle:="Hello! Open Me!") If lngFlags And ahtOFN_ALLOWMULTISELECT Then If IsArray(result) Then Dim i As Integer For i = 0 To UBound(result) MsgBox result(i) Next i Else MsgBox result End If Else MsgBox result End If ' Since you passed in a variable for lngFlags, ' the function places the output flags value in the variable. Debug.Print Hex(lngFlags) End Function Function GetOpenFile(Optional varDirectory As Variant, _ Optional varTitleForDialog As Variant) As Variant ' Here's an example that gets an Access database name. Dim strFilter As String Dim lngFlags As Long Dim varFileName As Variant ' Specify that the chosen file must already exist, ' don't change directories when you're done ' Also, don't bother displaying ' the read-only box. It'll only confuse people. lngFlags = ahtOFN_FILEMUSTEXIST Or _ ahtOFN_HIDEREADONLY Or ahtOFN_NOCHANGEDIR If IsMissing(varDirectory) Then varDirectory = "" End If If IsMissing(varTitleForDialog) Then varTitleForDialog = "" End If ' Define the filter string and allocate space in the "c" ' string Duplicate this line with changes as necessary for ' more file templates. strFilter = ahtAddFilterItem(strFilter, _

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 33

"Access (*.mdb)", "*.MDB;*.MDA") ' Now actually call to get the file name. varFileName = ahtCommonFileOpenSave( _ OpenFile:=True, _ InitialDir:=varDirectory, _ Filter:=strFilter, _ Flags:=lngFlags, _ DialogTitle:=varTitleForDialog) If Not IsNull(varFileName) Then varFileName = TrimNull(varFileName) End If GetOpenFile = varFileName End Function Function ahtCommonFileOpenSave( _ Optional ByRef Flags As Variant, _ Optional ByVal InitialDir As Variant, _ Optional ByVal Filter As Variant, _ Optional ByVal FilterIndex As Variant, _ Optional ByVal DefaultExt As Variant, _ Optional ByVal FileName As Variant, _ Optional ByVal DialogTitle As Variant, _ Optional ByVal hwnd As Variant, _ Optional ByVal OpenFile As Variant) As Variant ' This is the entry point you'll use to call the common ' file open/save dialog. The parameters are listed ' below, and all are optional. ' ' In: ' Flags: one or more of the ahtOFN_* constants, OR'd together. ' InitialDir: the directory in which to first look ' Filter: a set of file filters, set up by calling ' AddFilterItem. See examples. ' FilterIndex: 1-based integer indicating which filter ' set to use, by default (1 if unspecified) ' DefaultExt: Extension to use if the user doesn't enter one. ' Only useful on file saves. ' FileName: Default value for the file name text box. ' DialogTitle: Title for the dialog. ' hWnd: parent window handle ' OpenFile: Boolean(True=Open File/False=Save As) ' Out: ' Return Value: Either Null or the selected filename Dim OFN As tagOPENFILENAME Dim strFileName As String Dim strFileTitle As String Dim fResult As Boolean ' Give the dialog a caption title. If IsMissing(InitialDir) Then InitialDir = CurDir If IsMissing(Filter) Then Filter = ""

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 34

If IsMissing(FilterIndex) Then FilterIndex = 1 If IsMissing(Flags) Then Flags = 0& If IsMissing(DefaultExt) Then DefaultExt = "" If IsMissing(FileName) Then FileName = "" If IsMissing(DialogTitle) Then DialogTitle = "" If IsMissing(hwnd) Then hwnd = Application.hWndAccessApp If IsMissing(OpenFile) Then OpenFile = True ' Allocate string space for the returned strings. strFileName = Left(FileName & String(256, 0), 256) strFileTitle = String(256, 0) ' Set up the data structure before you call the function With OFN .lStructSize = Len(OFN) .hwndOwner = hwnd .strFilter = Filter .nFilterIndex = FilterIndex .strFile = strFileName .nMaxFile = Len(strFileName) .strFileTitle = strFileTitle .nMaxFileTitle = Len(strFileTitle) .strTitle = DialogTitle .Flags = Flags .strDefExt = DefaultExt .strInitialDir = InitialDir ' Didn't think most people would want to deal with ' these options. .hInstance = 0 '.strCustomFilter = "" '.nMaxCustFilter = 0 .lpfnHook = 0 'New for NT 4.0 .strCustomFilter = String(255, 0) .nMaxCustFilter = 255 End With ' This will pass the desired data structure to the ' Windows API, which will in turn it uses to display ' the Open/Save As Dialog. If OpenFile Then fResult = aht_apiGetOpenFileName(OFN) Else fResult = aht_apiGetSaveFileName(OFN) End If ' The function call filled in the strFileTitle member ' of the structure. You'll have to write special code ' to retrieve that if you're interested. If fResult Then ' You might care to check the Flags member of the ' structure to get information about the chosen file. ' In this example, if you bothered to pass in a ' value for Flags, we'll fill it in with the outgoing ' Flags value. If Not IsMissing(Flags) Then Flags = OFN.Flags

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 35

If Flags And ahtOFN_ALLOWMULTISELECT Then ' Return the full array. Dim items As Variant Dim value As String value = OFN.strFile ' Get rid of empty items: Dim i As Integer For i = Len(value) To 1 Step -1 If Mid$(value, i, 1) <> Chr$(0) Then Exit For End If Next i value = Mid(value, 1, i) ' Break the list up at null characters: items = Split(value, Chr(0)) ' Loop through the items in the "array", ' and build full file names: Dim numItems As Integer Dim result() As String numItems = UBound(items) + 1 If numItems > 1 Then ReDim result(0 To numItems - 2) For i = 1 To numItems - 1 result(i - 1) = FixPath(items(0)) & items(i) Next i ahtCommonFileOpenSave = result Else ' If you only select a single item, ' Windows just places it in item 0. ahtCommonFileOpenSave = items(0) End If Else ahtCommonFileOpenSave = TrimNull(OFN.strFile) End If Else ahtCommonFileOpenSave = vbNullString End If End Function Function ahtAddFilterItem(strFilter As String, _ strDescription As String, Optional varItem As Variant) As String ' ' ' ' Tack a new chunk onto the file filter. That is, take the old value, stick onto it the description, (like "Databases"), a null character, the skeleton (like "*.mdb;*.mda") and a final null character.

If IsMissing(varItem) Then varItem = "*.*" ahtAddFilterItem = strFilter & _ strDescription & vbNullChar & _

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 36

varItem & vbNullChar End Function Private Function TrimNull(ByVal strItem As String) As String Dim intPos As Integer intPos = InStr(strItem, vbNullChar) If intPos > 0 Then TrimNull = Left(strItem, intPos - 1) Else TrimNull = strItem End If End Function Private Function FixPath(ByVal path As String) As String If Right$(path, 1) <> "\" Then FixPath = path & "\" Else FixPath = path End If End Function '************** Code End *****************

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 37

Highlighting search matches in Access 2007


4 votes: by Allen Browne, 18 May 2009 2,167 views 0 comments (Access 2003)

Microsoft Access: Applications and Utilities


Provided by Allen Browne, July 2008 Search form, with matching characters highlighted in red

Highlight matches
Can you create a form where search results are highlighted within the text box? You can in Access 2007, as text boxes can display rich text. Download the sample database (ACCDB, 41kb zipped.) To use it: 1. 2. Select a field in the combo. Type the characters to match in the text box.

When you press Enter, the form filters to those records where the characters are found in the field, and displays a text box showing the matching characters in red.

Limitations
The sample database is concept-only. You will need to develop it further to use it with:

Multi-valued fields, Attachments, or OLE Objects (error); Combos where the display value is not the bound column (doesn't match); Memo fields where rich text is stored (tags may clash);

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 38

Non-numeric characters (dollar sign, date-separator, etc) in formatted fields (Date, Number, Currency, Yes/No.)

How it works
As well as the usual controls bound to fields, the continuous form shown above has:

cboField: an unbound yellow combo in the Form Header, where you select a field from a value list. (The code assumes the controls and fields have the same name.) txtSearchText: a unbound yellow text box in the Form Header, where you enter some characters to match. txtSearchDisplay: a gray text box in the Detail section, to display highlighted matches.

The idea is to include an HTML tag in set the ControlSource of txtSearchDisplay to highlight the search characters. Since its TextFormat property is Rich Text, Access 2007 knows what to do with the HTML tag. For the example above where we searched the CompanyName field for the characters "AR", the ControlSource will become:

=Replace([CompanyName], "ar", "<b>ar</b>"))


In practice, Replace() cannot cope with Nulls, so we must test for Null. And for demonstration purposes, we used a red font tag instead of bold. The expression ends up as:

=IIf([CompanyName] Is Null, Null, Replace([CompanyName], "ar", "<font color=""red"">ar</font>"))


The AfterUpdate event of cboField repositions txtSearchDisplay over the top of the chosen field (by setting its Top and Left properties.) At design time, we used Bring To Front (on the Arrange tab of the Form Design Tools ribbon) so it sits in front of the other controls. The AfterUpdate event of txtSearchText applies/removes the form's Filter, and shows/hides txtSearchDisplay with the right ControlSource. Finally, we set the TabStop property of txtSearchDisplay to No, so it does not receive focus as the user tabs through the form. And just in case the user clicks on it, we use its Enter event to SetFocus to the text box bound to the real field. (Naturally, this suppresses the highlighting, but only on the current record.) Home Index of tips Top

Please Note: This is a cached tutorial (reproduced with permission). To view the tutorial at its original location click here.

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 39

Find character INSTRING


Taken from the phone directory lookup if instr(ThisDeptNo,"-") > 0 then SplitDeptNo=split(ThisDeptNo,"-") SplitDeptNo(0)=trim(SplitDeptNo(0)) SplitDeptNo(1)=trim(SplitDeptNo(1)) ThisDeptNo=SplitDeptNo(0) & SplitDeptNo(1) end if

Add Field to Table


See K:\Hoover\Access Code Snippits by Hoover\Code Snippits by RGH.mdb Private Sub cmdAddField_Click() On Error GoTo Err_cmdAddField_Click Dim myDB As DAO.Database, tdfNew As TableDef Dim strTitle As String, strPrompt As String, strInput As String Dim strTable As String, strField As String Set myDB = CurrentDb() strTitle = "Table Name" strPrompt = "Enter the table name in which you want to add a new field:" strTable = InputBox(strPrompt, strTitle) strTitle = "Field Name" strPrompt = "Enter the new field name:" strField = InputBox(strPrompt, strTitle) Set tdfNew = myDB.TableDefs(strTable) tdfNew.Fields.Append tdfNew.CreateField(strField, dbText) DoCmd.OpenTable strTable Err_cmdAddField_Click: MsgBox Err.Description End Sub

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 40

Convert To Sentence Case

Code to Specify Report via MsgBox


Private Sub cmdOpenWkSched_Click() Dim intAnswer As Integer intAnswer = MsgBox("Include Consultants and Designated Consultants in report?", vbQuestion + vbYesNo, "Report Contents") If intAnswer = vbYes Then stDocName = "mcrOpenWkSchedRpt" Else stDocName = "mcrOpenWkSchedRpt_NoConsultants" End If DoCmd.RunMacro stDocName End Sub

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 41

DateDiff Solutions
Calculate dates across midnight: THIS DOESNT WORK: =(DateDiff("n",[TueStartW1],[TueEndW1])-30)/60 THIS DOES: =((DateDiff("n",[TueStartW1],[TueEndW1])+1440-30) Mod 1440)/60 1440 = minutes in 24 hour period
Source: http://www.pcreview.co.uk/forums/calculate-time-difference-t4025488.html On Sep 27, 11:38*am, John Spencer <JSPEN...@Hilltop.umbc> wrote: > The following expression can be used to calculate elapsed time when thereis > no date component and times may be over two days. *For example, 11:49 PM to > 1:00 AM > > Number of Minutes: > * * (DateDiff("n",Starttime,Endtime) + 1440) Mod 1440 > > Number of Seconds: > * * (DateDiff("s",Starttime,Endtime) + 86400) Mod 86400 > > You can round (up or down) the number of minutes to the nearest 15 with an > expression like > > Round(N/15,0) * 15 > > John Spencer > Access MVP 2002-2005, 2007-2010 > The Hilltop Institute > University of Maryland Baltimore County

/var/www/apps/conversion/current/tmp/scratch5735/103941692.doc

Page 42

You might also like