|
I know that but how could i rewrite it to not do that. Im still kinda learning access VB.
Thanks for any help.
|
|
|
|
|
That's just it, you can't! There is no method provided by the MailMerge object that will allow you to supply a previously prepared connection object. MailMerge will always create and use it's own connection.
Why is this an issue anyway?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Well what im trying to do is:
I need to create a mutipage report with different things on each page. So i figured i would use mailmerge but then i also need to be able to have the user pull a record of choice to be displayed in word for this mail merge. Which i have been able to accomplish the only problem was with opening the database and pulling the data i need from a form. Thanks for the help at least now i know its not possible. Do you have any idea on what would be a way to do this without mailmerge. Thanks again for your time.
Nathan
|
|
|
|
|
Well what im trying to do is:
I need to create a mutipage report with different things on each page. So i figured i would use mailmerge but then i also need to be able to have the user pull a record of choice to be displayed in word for this mail merge. Which i have been able to accomplish the only problem was with opening the database and pulling the data i need from a form. Thanks for the help at least now i know its not possible. Do you have any idea on what would be a way to do this without mailmerge. Thanks again for your time.
|
|
|
|
|
You have several options.
First, you can dynamically create a Query that MailMerge can execute to get the data it needs. Either plug the SQL statement directly into the MailMerge.OpenDataSource method, or build the query in Access and have MailMerge run that Query to get the data. You'll probably have to modify the query in Access first before you tell MailMerge to execute the query.
Next, use the appropriate tools for the job. MailMerge gets it's name from Mailing List. It merges a list of names and address into form letters and such. Though it can do more than just this, reporting is not it's forte. I would suggest using the Reporting features built into Access first.
Lastly, use an actualy reporting package, such a Crystal Reports.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Does anyone know how to extract the amount of physical memory installed on a machine via registry using VB.net? The example below was written in KIX but I'm unable to replicate in VB.net. I'm having issues reading the data type REG_FULL_RESOURCE_DESCRIPTOR.
Any Help?
Thanks
<font face='Courier New' size=2 color=#4B0082><font color=#008000>;; FUNCTION Memory() </font><br /><font color=#008000>;; </font><br /><font color=#008000>;; AUTHOR Glenn Barnas / FRIT-EROC </font><br /><font color=#008000>;; </font><br /><font color=#008000>;; ACTION Returns the amount of Physical "color: rgba(0, 0, 0, 1); background-color: rgba(160, 255, 255, 1)">RAM in a local or remote system </font><br /><font color=#008000>;; </font><br /><font color=#008000>;; SYNTAX Memory([system]) </font><br /><font color=#008000>;; </font><br /><font color=#008000>;; VERSION 2.0 </font><br /><font color=#008000>;; </font><br /><font color=#008000>;; DATE 2004/02/04 </font><br /><font color=#008000>;; </font><br /><font color=#008000>;; DATE REVISED 2005/02/25 - updated </font><br /><font color=#008000>;; </font><br /><font color=#008000>;; PARAMETERS System - OPTIONAL - name of system to query. Default is local system </font><br /><font color=#008000>;; </font><br /><font color=#008000>;; REMARKS Returns "color: rgba(0, 0, 0, 1); background-color: rgba(160, 255, 255, 1)" size=""__^<br /><font color=#008000>;; Returns @ERROR on registry read failure, </font><br /><font color=#008000>;; or 13 / "Data is Invalid" if reg value is null </font><br /><font color=#008000>;; </font><br /><font color=#008000>;; RETURNS Installed Physical ^__B style="color:black;background-color:#A0FFFF"__^RAM</b__^ (in Megabytes) </font><br /><font color=#008000>;; </font><br /><font color=#008000>;; DEPENDENCIES None </font><br /><font color=#008000>;; </font><br /><font color=#008000>;; TESTED WITH WinNT, Win2K, WinXP, Win2K3 </font><br /><font color=#008000>;; Tested with up to 6G of ^__B style="color:black;background-color:#A0FFFF"__^RAM </font><br /><font color=#008000>;; </font><br /><font color=#008000>;; EXAMPLES $^__B style="color:black;background-color:#A0FFFF"__^RAM = Memory('ThatPC') </font><br /><font color=#008000>;; </font><br /><font color=#008000>; </font><br /><font color=#0000FF>Function</font> Memory(<font color=#0000FF>Optional</font> <font color=#8B4513>$System</font>)<br /> <font color=#0000FF>Dim</font> <font color=#8B4513>$MemKey</font>, <font color=#8B4513>$HexDmp</font>, <font color=#8B4513>$Pointer</font>, <font color=#8B4513>$Counter</font>, <font color=#8B4513>$Start</font>, <font color=#8B4513>$Hex</font>, <font color=#8B4513>$HVal</font>, <font color=#8B4513>$Error</font>, <font color=#8B4513>$^__B style="color:black;background-color:#ffff66"__^Hex2Dec</font><br /> <font color=#008000>; Init the counter to account for base memory </font><br /> <font color=#8B4513>$Memory</font> = <font color=#FF0000>720.0</font><br /> <BR><br /> <font color=#008000>; Insure $System has "\\System\" format if it is specified </font><br /> <font color=#0000FF>If</font> <font color=#8B4513>$System</font> <^__b __^> <font color=#000000>''</font><br /> <font color=#8B4513>$System</font> = <font color=#000000>'\\'</font> + <font color=#FF0000>Join</font>(<font color=#FF0000>Split</font>(<font color=#8B4513>$System</font>,<font color=#000000>'\'</font>),<font color=#000000>''</font>,<font color=#FF0000>3</font>) + <font color=#000000>'\'</font><br /> <font color=#0000FF>EndIf</font><br /> <BR><br /> <font color=#008000>; Get the memory value from the registry </font><br /> <font color=#8B4513>$MemKey</font> = <font color=#8B4513>$System</font> + <font color=#000000>'HKEY_LOCAL_MACHINE\hardware\resourcemap\system resources\physical memory'</font><br /> <font color=#8B4513>$HexDmp</font> = <font color=#FF0000>ReadValue</font>(<font color=#8B4513>$MemKey</font>, <font color=#000000>'.Translated'</font>)<br /> <BR><br /> <font color=#008000>; Check for invalid read and return </font><br /> <font color=#0000FF>If</font> <font color=#FF0000>Len</font>(<font color=#8B4513>$HexDmp</font>) = <font color=#FF0000>0</font> Or <font color=#FF7F50>^__b__^@ERROR</font><br /> <font color=#8B4513>$Memory</font> = <font color=#FF0000>0</font> <font color=#008000>; return 0 Mbytes </font><br /> <font color=#8B4513>$Error</font> = <font color=#FF0000>IIf</font>(<font color=#FF7F50>^__b__^@ERROR</font>, <font color=#FF7F50>^__b__^@ERROR</font>, <font color=#FF0000>13</font>) <font color=#008000>; Return "Data is Invalid" if no error but data is blank </font><br /> <font color=#0000FF>Exit</font> <font color=#8B4513>$Error</font><br /> <font color=#0000FF>EndIf</font><br /> <BR><br /> <font color=#008000>; Resequence the bytes in the HexDump, starting in the 65th position, </font><br /> <font color=#008000>; and take 8 bytes every 32 bytes for the total memory amount, sum each set of values </font><br /> <font color=#0000FF>For</font> <font color=#8B4513>$Start</font> = <font color=#FF0000>65</font> <font color=#0000FF>To</font> <font color=#FF0000>Len</font>(<font color=#8B4513>$HexDmp</font>) <font color=#0000FF>Step</font> <font color=#FF0000>32</font><br /> <font color=#8B4513>$^__B style="color:black;background-color:#ffff66">Hex2Dec</font> = <font color=#FF0000>0.0</font><br /> <font color=#8B4513>$Hex</font> = <font color=#FF0000>SubStr</font>(<font color=#8B4513>$HexDmp</font>, <font color=#8B4513>$Start</font>+<font color=#FF0000>6</font>, <font color=#FF0000>2</font>)<br /> + <font color=#FF0000>SubStr</font>(<font color=#8B4513>$HexDmp</font>, <font color=#8B4513>$Start</font>+<font color=#FF0000>4</font>, <font color=#FF0000>2</font>)<br /> + <font color=#FF0000>SubStr</font>(<font color=#8B4513>$HexDmp</font>, <font color=#8B4513>$Start</font>+<font color=#FF0000>2</font>, <font color=#FF0000>2</font>)<br /> + <font color=#FF0000>SubStr</font>(<font color=#8B4513>$HexDmp</font>, <font color=#8B4513>$Start</font>, <font color=#FF0000>2</font>)<br /> <br /> <font color=#008000>; Simply taking the Val($Hex), can return negatives for values </font><br /> <font color=#008000>; Following logic adapted from a solution by Richard H. </font><br /> <font color=#0000FF>While</font> <font color=#8B4513>$Hex</font><br /> <font color=#8B4513>$^__B style="color:black;background-color:#ffff66">Hex2Dec</font> = <font color=#FF0000>16.0</font> * <font color=#8B4513>$^__B style="color:black;background-color:#ffff66">Hex2Dec</font> + <font color=#FF0000>Val</font>(<font color=#000000>'&'</font> + <font color=#FF0000>Left</font>(<font color=#8B4513>$Hex</font>,<font color=#FF0000>1</font>)) <font color=#008000>; convert next hex digit </font><br /> <font color=#8B4513>$Hex</font> = <font color=#FF0000>SubStr</font>(<font color=#8B4513>$Hex</font> ,<font color=#FF0000>2</font>) <font color=#008000>; then throw it away </font><br /> <font color=#0000FF>Loop</font> <font color=#008000>; until all are converted </font><br /> <font color=#8B4513>$Memory</font> = <font color=#8B4513>$Memory</font> + <font color=#FF0000>CDbl</font>(<font color=#8B4513>$^__B style="color:black;background-color:#ffff66">Hex2Dec</font>) / <font color=#FF0000>1024</font> <font color=#008000>; update running total </font><br /> <font color=#0000FF>Next</font><br /> <br /> <font color=#008000>; Reduce to Meg value </font><br /> <font color=#8B4513>$Memory</font> = <font color=#FF0000>CInt</font>(<font color=#8B4513>$Memory</font> / <font color=#FF0000>1024</font>)<br /><font color=#0000FF>EndFunction</font><br /> <BR></font>
|
|
|
|
|
Since you're using VB.NET, why not just skip the complicated math junk coming out of the Registry and get the data you want using WMI?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I'm trying to gather hardware info from Win2k, WinXP and WinNT machines (which do not have WMI installed.) Is there another method other than WMI for NT machines?
Thanks
|
|
|
|
|
Once the .NET Framework is installed on the machine, that's no longer a problem.
Or is there something else you're not telling us?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
???? .NET Framework is not installed on the NT machines. I'm querying these machines remotely.
Thanks
|
|
|
|
|
...How did I know...
The other problem that your going to run into is the possibility that the RemoteRegistry service is not running on these machines. Or that the machine is not patched up with the latest service pack, causing wierd problems in just connecting to the services that you want.
I ran into the same problems myself, doing exactly what your doing.
But, I guess it's back to the parsing problem you were having.
What are you using to get at the Registry? Is it the Registry class? Since the Registry class interprets the data you send to it or is retrieved from the Registry, is the data even being returned correctly? Are you getting an array of bytes?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Assuming the RemoteRegistry service is running, the problem is, I dont know how to read/extract the data type REG_FULL_RESOURCE_DESCRIPTOR from HKEY_LOCAL_MACHINE\HARDWARE\RESOURCEMAP\System Resources\Physical Memory[.Translated]
Thanks
|
|
|
|
|
Yeah, I tried a little sample code and found that none of the current Registry classes or providers will read the thing. You'll have to P/Invoke the Win32 Registry functions to get this to work. There's little to no documentation on this RegType so it'll take some trial-and-error to figure it out.
Platform SDK: Registry Functions[^]
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thanks for your help!!
|
|
|
|
|
I'm not sure why you want it from the registry but this may be of intrest:
http://www.freevbcode.com/ShowCode.asp?ID=5920
Memory Monitor (VB.NET 1.1)
|
|
|
|
|
Thanks but not what I'm looking for. I'm gathering hardware info from win2k, winxp and winNT machines. WinNT does not have WMI installed so I cannot use a wmi query.
Thanks anyway
|
|
|
|
|
"WinNT does not have WMI installed so I cannot use a wmi query"
Ok, but the one in the link I sent you isn't WMI it is the GlobalMemoryStatus API.
But it was just a thought.
|
|
|
|
|
He's polling for this information from a remote machine, so using the API's won't work.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
If a mouse button is press down on a button control, before the button is release, how to respond repeatly to a button's mousedown event?
|
|
|
|
|
There is only one MouseDown event fired. It doesn't get fired continously as the button is held down.
Are you looking at doing something while the mouse button is held down and the mouse is moving? Check into the MoveMouse event. In there, you can check to see if the mouse button(s) are being held down and do whatever you need to based on their status.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
It seems there is only one mousedown event fired. Do you notice that when you set the clock and date in the windows operating system, when you hold down the button. the number will change continuously.
Thanks,
|
|
|
|
|
ds feng wrote:
It seems there is only one mousedown event fired.
You DID read my post, didn't you?
ds feng wrote:
Do you notice that when you set the clock and date in the windows operating system, when you hold down the button. the number will change continuously
Yes! But it doesn't work the way you think it does. Here's a simplified explaination of what's really going on:
The control has an internal timer, set for about 250 milliseconds, that is started when one of the button Click events fires. In this button's Click event handler, a flag is set to show which button is being clicked and the internal timer is started.
In the timers' Tick event, the number in the control is either incremented or decremented according to the flag that shows which button was clicked.
Now, when a MouseUp event fires, the timer is stopped and the flag is cleared, stopping the advancement of the number.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I am designing a calendar in VB.Net without using the toolbox option calendars. The calendar has to display text like last name and date without displaying the day of the week. Then the program will have to calculate the number of entries for the given month. The user will have the option of choosing the month and year. If anyone can answer this, it will be of great help.
|
|
|
|
|
Answer what? You never asked a question, not gave a context on the type of question you want answered...
But, in general, this sounds like a candidate for a custom control. You'll, obviously, have to do all the drawing yourself as well as supplying the data for the controls data organization and management. This can either be an external datastore, supplied by the consumer, or an internal datastore, stored in the data structures of the control. In this case I would opt for an external implementation for greater flexibility and scalability. In order to do this you'll have to define an Interface that the consumer would have to implement so you have a set of known methods for your control to get at any data it needs at any time.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Are ther any examples on how to edit word documents?
Thanks,
Martin
|
|
|
|
|