|
If I recall correctly, it is called a flex grid.
do you need to investigate an online backup[^] company
|
|
|
|
|
Hi guys
I have a windows form with some textboxes, a datetimepicker, a checkedbox and a numericupdown, all of them binded to a bindingsource, when i add a new record (bindingsource.addnew()) a new row appears and the textboxes are empty (its OK), the datetime picker keeps the value from the previous record, and when i save the record (without modifying the datetimepicker), a new row is inserted but with null value in the datefield, the same happens for the checked box and numericupdown (they kkep the value from the previous record), and if they are not modified, a null value will be inserted.
I know i could assign a value to datetimepicker.value=now, and so on for the other 2 controls, but is there any way to insert records with the values on those controls (no matter if i changed them or not)?
Ive aldo tryed: bindingsource.resetbinding and bindingsource.resetcurrentitem, none of them does what i need
Thanks in advance
|
|
|
|
|
I can finially get the database file to copy where I want it too. But since file copying is a lengthy process I would like to show the user the progress of the file copy underway.
How can we task that to a ProgressBar control?
Code Sample:
Dim fs
Dim lngNumberChar As Long
Dim strPath As String
Dim strSourcePath As String
Dim strTargetPath As String
Dim strDbName As String
Dim strDbFileName As String
'set the target path for file coping
strTargetPath = drvList.Drive & "\" & strDefaultFolder & "\" & strDB
'set the path for making the Archive folder on the specified drive
strPath = drvList.Drive & "\" & strDefaultFolder
Set fs = CreateObject("Scripting.FileSystemObject")
'Retrive working database from INI file
strDbName = Space(256)
lngNumberChar = GetPrivateProfileString("Database", "strDBName", "", _
strDbName, 255, App.Path & "\Cosmo_VB.ini")
strDbName = Left(strDbName, lngNumberChar)
'Set the source path for file coping
strSourcePath = App.Path & "\" & strDbName
'Does the Archive folder exist on the specified drive?
If fs.FolderExists(drvList.Drive & "\" & strDefaultFolder) Then
'Yes, Overwrite the existing backup with the latest one
strDbFileName = Dir(strSourcePath)
If UCase(strDbFileName) = "COSMO_VB.MDB" Then
fs.CopyFile strSourcePath, strTargetPath, True
End If
Else
'Create the folder on the specified drive
fs.CreateFolder (strPath)
dirList.Refresh
dirList.Path = strDefaultFolder
strDbFileName = Dir(strSourcePath)
If UCase(strDbFileName) = "COSMO_VB.MDB" Then
'Copy the database file into the specified target path.
fs.CopyFile strSourcePath, strTargetPath, True
End If
End If
Quecumber256
|
|
|
|
|
Since the CopyFile method you're using to do the work doesn't (and will never) report back any progress, you can't really make a ProgressBar work. You'll never know how much progress has been made or how much is left.
There are several ways around this, none of them "simple".
1) Implement your own copy function. You'll have to get the file size, open the source file for Shared Read, read the contents in chunks, write them to the new file, and after every chunk, fire an event that notifies about the progress.
2) Use the Shell's File Copy function. This will show the normal copy operation dialog that you get when you drag and drop files in Explorer. The downside to using this is the user can cancel the copy. The upside is it does it's own ProgressBar.
3) Implement a ProgressBar that doesn't progress, but instead "spins". There is no 100%, but there is at least something to show that something is going on. See this[^] article on MSDN for an example.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Dave,
This application was built with very novice users in mind. Therefore option 2 is the best bet. Can you point me in the proper direction for the Shell File Copy?
Thank you,
Quecumber256
|
|
|
|
|
Interesting development. I tried to use the FileCopy like this:
FileCopy strSourcePath, strTargetPath
I received this error Run time error '70' Permission denied. I'm assuming that because I have the source database open it won't allow me to copy it. Am I right?
Thank you,
Quecumber256
|
|
|
|
|
More than likely. The database is probably opened by the driver DenyShareAll, which means you can't get at it until the database is closed. That means all open connections must be closed before you can copy the .MDB file. Either that, or you don't have the proper permissions to write to the detination folder...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
The filecopy worked fine using the FileSystemObject. I'm copying to a Jumpdrive so there is no write deny permissions there.
Is there a way to show a message box saying "PLease wait..." that will be shown on the screen until the filecopy is completed and it will then close?
Thank you,
Quecumber256
|
|
|
|
|
All you have to do is create a simple form for this. Just put a label on the form that says "Please wait...". Remember to turn off the control box an remove the minimize, maximize buttons. Show the form, do your copy, kill the form.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Option 2 is also the hardest to implement. You'd be calling the Win32 API function SHFileOperation . The problem is that there are not very many examples of calling this using VB.NET, that are readable anyway. There's a TON of VB6 examples though, Google[^], but the code would have to be rewritten to work with VB.NET.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hello!
I have received the following error message when I try to execure the given procedure below. If you have any idea, please enlight me about it!
Thanks!
BJ
A call to PInvoke function 'VSEssentials!VSEssentials.SoundPlayer::GetShortPathName'
has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.
Private Function GetDosPath(ByVal LongPath As String) As String
Dim Temp As String
Dim z As Int32
Dim ch As Char
Dim PathLength As Int32
z = LongPath.Length + 1
Temp = New String(ch, z)
PathLength = GetShortPathName(LongPath, Temp, z) <--- That is where the error occurs
GetDosPath = StripPath(Temp)
End Function
|
|
|
|
|
Your Declare statement for GetShortPathName is incorrect. This is common if you were looking at VB6 code and copied and pasted the Declare into your VB.NET code. This is usually because a Long in VB6 is a 32-bit singed integer, while in VB.NET the Long type is a 64-bit signed integer, but it can also be caused by other type mismatches.
Your best solution is to rewrite the Declare statement and match up the correct VB.NET data types to the ones specified in the C function header declaration.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Is there a Union type for VB.Net like the one in C and C++? I could really use one in my project but i dont see anything that resembles it. Any help would be aprciated
Pablo
|
|
|
|
|
No. The .NET Framework doesn't directly suport unions. This includes C# and any of the other Managed languages.
You can, however, simulate one by specifying a structure layout of Explicit and giving each of your fields the appropriate offset.
<StructLayout(LayoutKind.Explicit)> _
Private Structure UnionStructure
' First set of field values
<FieldOffset(0)> Public i As Integer
<FieldOffset(4)> Public j As Integer
' Second set of field values that overlay the first set
<FieldOffset(0)> Public k As Integer
<FieldOffset(4)> Public l As Integer
End Structure
Notice the FieldOffset 's for each field specifies exactly how far from the beginning of the structure each field should be placed. Field k overlays i and l overlays j .
You can find more information here[^] on MSDN.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thanks this will be helpfull
Pablo
|
|
|
|
|
I am trying to do some serial port communication using VB.net. MSCOMM32.ocx allows me to do only ASCII characters over the COMM port. I am trying to create a datalogger for my car by reading Data from the OBD2 output. The request is querried over the COMM port but in non ASCII characters. Is there some other way that I can accomplish this task?
Thanks
|
|
|
|
|
Hi,
Can someone tell me why this simple code isn't working? If the folder exists on the specified drive we should see the message "The ARCHIVE folder exists on the specified drive." If folder does NOT exists we should get the message "The ARCHIVE folderr does not exist on the specified drive."
I have ran this code to look for the folder on the "E:" drive. I received the second message. I manually added the Archive folder to the E: drive and received the same message. Why?
Code sample:
Dim fs
Const strDefaultFolder = "Archives"
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FolderExists(strDefaultFolder) Then
Msg = "The " & UCase(strDefaultFolder) & " folder exists on the specified drive."
Else
Msg = "The " & UCase(strDefaultFolder) & " does not exist on the specified drive."
MsgBox Msg, vbInformation, "test"
End If
Thank you,
Quecumber256
|
|
|
|
|
You don't specify any drive in the code. You are not looking for "E:\Archives", but ".\Archives", e.g. in the working folder of the application.
---
b { font-weight: normal; }
|
|
|
|
|
Thank you that was the problem. The VB help file is notorious for not provideing specific details in order for certain things to work.
Quecumber256
|
|
|
|
|
Tell you what?
"As a programmer, it's YOUR responsibility to know how a file system works! To know how Absolute and Relative paths work! To know how to specify these things in your code and debug them!"
It's not the job of the VB documentation to teach you the basics of filesystem management. That's up to the O/S manual. And as a programmer, it's your job to know how the basic features of an operating system works before developing an application that uses them.
You sound like a lawyer who wants to put warning labels on everything to protect us from ourselves.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hi Dave,
No, I'm not a lawyer. I will admit to tunnel vision when I'm concentrating on a specific problem.
I haven't used the FileSystemObject so I make assumptions. For example when I saw this on the VB help - object.FolderExists(folderspec). I assumed it was going to look on the drive I had selected for the 'folderspec'.
If it was shown like this: object.FolderExists(Drive + folderspec) I would have known it was looking for a drive letter along with a folder name.
Thanks for the wake-up call,
Quecumber256
|
|
|
|
|
Quecumber256 wrote: I assumed it was going to look on the drive I had selected for the 'folderspec'.
How do you mean that you selected a drive?
---
b { font-weight: normal; }
-- modified at 9:18 Saturday 4th February, 2006
|
|
|
|
|
Hello
I used a standard DriveList control to select the drive where I wanted the backup to go, and as I stated before I'm not used to the FileSystemObject. Since the drive wasn't specified in the object.FolderExists(folderspec) I assumed the FileSystemObject would already know which drive I selected.
Reading it like it stands says look and see if 'folderspec' exists. If it was written like this: object.FolderExists(Drive & folderspec) it would read to me like, "Look on the Drive variable I supplied and see if the folder exists on that drive.
A lot of the references are witten in a simular manner. The author assumes the person reading the help file will know what he means.
In the type of person who needs to know all the details on how something works.
Thank you,
Quecumber256
|
|
|
|
|
If it would have been written that way, it would say that a drive specification was required, and that is not at all true.
The method uses the current folder unless an absolute path is specified, just like every other I/O method that exists. If you never used any I/O methods at all, I can understand if you don't know how that works.
---
b { font-weight: normal; }
|
|
|
|
|
I've used I/O methods, but object oriented programming seems to add wrinkles I am not used too. There are more occasions than I care to admit where I have done something the old way like providing a drive letter and get an error because of some quirk in the object oriented syntax.
Quecumber256
|
|
|
|