|
JUNEYT wrote: it doesn't produce a new record number but -1.
New records get negative numbers because the dataset hasn't been written back to the database yet. The database always assigns the key values, not your code. Update the database with the changes being held in the dataset and your new records will get their keys will get updated with real values.
|
|
|
|
|
I am a relatively new VBA user and this is my first post.
I am using Excel 2002 sp3 with VBA (help show VB 6.03 version 1024 on an XP sp3 machine.
I have a project with one workbook that has one form - frmRecordJob.
This form has a calendar control, a combo box, 2 listboxes, some labels, and 2 text boxes.
The 2 list boxes (lstCode1 and lstCode2) are in a frame. lstCode2 was created by copy/paste from lstCode1.
Checking their properties shows them to be identical except for the tab indices and top properties.
Both get their row source set in the form initialization routine.
These listboxes are not changed in any project code other than the form initialize event.
If I close Excel, restart Excel, open the workbook, start the VB editor, open and step through the form initialize procedure, the following occurs:
Private Sub UserForm_Initialize()
*** some code here that does not reference the list boxes ***
*** HERE indicates this line is highlighted during debug ***
With lstCode1
.RowSource = strRngBaseTable
End With HERE lstCode1 value = ""
With lstCode2
.RowSource = strRngBaseTable
End With HERE lstCode2 = null
End Sub
Why would the 2 list box values be different at this point?
Would they normally be "" or null?
At the end of the initialize procedure the form is shown and the 2 list boxes do not have any values selected. This is correct.
The form has a command button on it. If this clicked without any changes made the click event shows the following.
Private Sub cmdOK_Click()
Dim lng01 As Long
Dim bValidateNewGroom() As Variant
ReDim aryGroomDataFlags(1 To 6) As Variant
'If no Code1 entered
If IsNull(lstCode1) Then HERE lstCode1 = "" as before
lstCode1.Value = "" This line is not executed (correct)
End If HERE lstCode1 = "" as before (correct)
'If no Code2 entered
If IsNull(lstCode2) Then HERE lstCode2 = null as before
lstCode2.Value = "" This line IS executed (correct)
End If HERE lstCode2 = null (should be "")
'If new job data is valid
aryGroomDataFlags = ValidateGroomData(calGroomDate.Value, _ HERE blows up with runtime error 94
cmbAnimalName.Value, _ "Invalid use of null"
lstCode1.Value, _ I think this is because lstCode2 is null
lstCode2.Value, _
txtExtra1Charge.Value, _
txtExtra2Charge.Value)
My questions:
Why would the 2 list boxes be initialized differently (1="",2=null) ?
Why after lstCode2 is set to "" it still shows its value as null?
|
|
|
|
|
IMO you did something wrong while copy/paste/editing the ListBox code.
you need two "new ListBox" fragments in pretty much the same code location, I suggest you look for them and compare them.
|
|
|
|
|
I'm confused
I read your reply as indicating that when I copied and pasted the code from my project to this forum dialog I had messed up the formatting by not using tags. That was correct. I fixed it and reposted. Your 2nd reply:
Hi,
do not create a new thread, you could as well have edited the existing thread.
My answer there is still valid.
Sorry I created a new thread.
But what 'answer there' ?
All I saw was a needed suggestion about proper posting. Am I misreading your reply?
There was no copy/paste/edit of 'listbox code' in the project.
The copy/paste I had done was to copy the control itself initially during design time.
I must be missing something.
Could you better explain what you mean?
Thank in advance.
|
|
|
|
|
right above here, I already said "you need two "new ListBox" fragments in pretty much the same code location" which IMO is still the correct answer to your problem.
|
|
|
|
|
I must really be dense because I can't understand what you are saying.
Are you saying that I need two 'new listbox' fragments in my post (to make it more readable) or in the project itself?
Since 'listbox fragment' is not something I had heard in relation to VB, I assumed you were talking about the post, so I fixed the section where the 'listbox code' had been improperly formatted and my added comments did not appear correctly. In the new post the code matches the project. (It did in the original also though very hard to tell with the comments)
If you were talking about the code itself, what do you mean by 'two "new listbox" fragments'?
'Listbox fragments' - don't know what that means.
Code fragments? That say what?
By saying 'new' do you mean that I need to delete the listboxes and recreate them? I did that once already.
Please forgive my lack of comprehension.
|
|
|
|
|
is there anywhere in your code something that reads like "new ListBox"?
there should be two, as you want to work with two ListBoxes.
|
|
|
|
|
Thanks for clarifying.
I don't know if you looked at the corrected post, but it now shows:
Private Sub UserForm_Initialize()
*** some irrelevant code left out here ***
With lstCode1
.RowSource = strRngBaseTable
End With HERE lstCode1.Value = ""
With lstCode2
.RowSource = strRngBaseTable
End With HERE lstCode2.Value = null
End Sub
The list boxes were added by using the control toolbox when when the form was created.
These are NOT 'new' listboxes.
They, and their controls, exist at startup.
Notice that the two 'With' statements reference lstCode1 and lstCode2, two distinct listboxes.
Thanks for your help.
|
|
|
|
|
if you use Visual Studio
if you have the solution pane open
if you have ever clicked the "show all files" button
if your form happens to be called Form1
if you used Visual Designer to add a first ListBox and a second ListBox
and if you did change their default names to lstCode1 and lstCode2
then you will have a file called "Form1.Designer.vb" (that is where Visual Designer stores all the things you do graphically when designing Form1), in which you will find both these lines:
Me.lstCode1 = New System.Windows.Forms.ListBox
Me.lstCode2 = New System.Windows.Forms.ListBox
which is fine, and allows you to then do things with lstCode1 and lstCode2 as you did in the code you showed earlier.
And if you keep adding and removing ListBoxes with all kinds of names and changing code files without really understanding what you are doing, then you are likely to get variables that never get assigned an object to, so your code would fail.
I suggest you buy and study a book on VB.NET and start looking around inside your test projects.
|
|
|
|
|
if you use Visual Studio - no, I am NOT using Visual Studio. As stated, I am using the VBA that comes with Excel 2002 (Office XP Pro)
if you have the solution pane open - don't know what that is
if you have ever clicked the "show all files" button - don't know what that is
if your form happens to be called Form1 - as stated the form name is "frmRecordJob"
if you used Visual Designer to add a first ListBox and a second ListBox
and if you did change their default names to lstCode1 and lstCode2 - I used the pane on the upper left of VBE (title says VBAProject-JobLog.xls' to insert the new user form at initial design time. I don't believe this is what you are referring to as 'Visual Designer'.
No file "Form1.Designer.vb" exists on my system.
What leads you to believe that I "keep adding and removing ListBoxes with all kinds of names and changing code files without really understanding what you are doing"?
I had put the two listboxes in using the form designer and changed their names to something meaningful, as recommended. I removed them and recreated them because of the problems I was having. I changed the code files because I didn't want to leave them empty, that is, I actually wanted something to occur, for example, when the OK button is clicked.
As stated in my post, I am using Excel 2002 and VB 6.03 version 1024.
I don't know if your comment about getting VB.Net books was meant to be snide, but I don't see how that would help in this situation, since I am not using VB.Net. I have numerous VBA books from Sams, WROX, Microsoft Press, Que, and M&T books, and have looked through all of them trying to resolve this issue.
Thanks again for your help.
|
|
|
|
|
In vb 6.0 with MS Access using adodb.recordset the below sql statement gives error help please
dim sql as string
sql="Select * from table1 Where Replace(Field1,".","")=" & tokenID
set rs=cn.execute(sql)
Error: Unknown function Replace is used
although the above sql statement works fine in MS Access query
|
|
|
|
|
IMO your problem is with the string literals inside the Replace call; try doubling the double quotes in there.
|
|
|
|
|
Hello,
I am working with a dataset and I just realized that there is a few methods in vb.net to add a new row to a dataset.
Can I simply add a row in figure 1 instead of creating an explicit dataset and a data table because in design time I created a dataset already. Why do I have to explicitly create a dataset and a table and then a row if I am able to add
a new row with new values with a single line code?
Thanks.
Figure 1.
BPRO.NameTable.Rows.Add("Jashua", "Carla", "Chris")
THE USUAL WAY WAS
Figure 2.
Dim NewDS As New BPRO
Dim Rt As New BPRO.NameTable
Dim NewRow As DataRow = NewDS.Tables("NameTable").NewRow
NewRow("Names") = Trim(UserName.Text.ToUpper)
NewDS.Tables("NameTable").Rows.Add(NewRow)
What a curious mind needs to discover knowledge is noting else than a pin-hole.
|
|
|
|
|
As far as I know, it should work. I have used ADO in C++.
|
|
|
|
|
I have an object that raises custom events.
I want to put these objects into a List(of MyClass) (not an Array , and not an ArrayList ). I'm trying to do this:
Private Sub AddItem()
Dim WithEvents obj As MyClass
obj = New MyClass()
MyList.Add(obj)
End Sub
The IDE is puking on the WithEvents thing (saying it's not a valid declaration in a local variable. How do I have to do this? (In C#, this isn't an issue.)
.45 ACP - because shooting twice is just silly ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001
|
|
|
|
|
I suspect the answer is to omit the WithEvent keyword. When you reference an object in the list you can use the AddHandler statement to associate the relevant event(s) with the appropriate event handling routines.
|
|
|
|
|
WithEvents only applies to class or module level declarations. All it is is syntactic sugar for allowing you to use the Handles clause on procedures and have the events wired up for you.
For locally declared instances that exposes events, you just need to wire up the event handlers yourself (and tear them down later) with AddHandler /RemoveHandler .
John Simmons / outlaw programmer wrote: (In C#, this isn't an issue.)
'cause in C#, you're just wiring everything up yourself anyway. It's really no different in VB.NET.
|
|
|
|
|
Hi all.
I want to create a program in which I want to compare hashvalue of an ordinary file and a same ordinary but damaged file so that I could distinct them by using CRC32 algorithm.
If current CRC32 value of a file is not equal to its actual value then it will show a message that file is damaged otherwise file is not damaged.
Suggest me how can I do this (and give me some piece of code to better understand it).
Thanks.
Gagan
Gagan
|
|
|
|
|
|
Thanks for your help but I have still some doubt.
That example only explain that how to compute CRC32 hash value of a file but how can I differtiate two same files, one is in good condition and one is damaged or infected by some virus, by computing CRC32 hash values of both files.
Suggest me how to do this.
Thanks.
Gagan
|
|
|
|
|
Uhhh...compare the two hash values??
|
|
|
|
|
Dave K is right. If the two files are identical, they will give the same hash value. If the hash values are different, the files are different. Simple as that.
|
|
|
|
|
Oopps...sorry for that stupid question, I got the point.
Thanks to all for your help
Gagan
|
|
|
|
|
So...lemme ask you guys this:
I'm trying to automate a [crappy] pivot table [that doesn't belong to me] where the data is time-phased. Meaning, that each week when I get the pivot table, the date range will be different.
So, how would you attack the problem of only viewing the last four weeks of data?
I wrote some simple pivottable code, but need to make it so the dates are non-specific:
Sub DUMMY()
'
' DUMMY Macro
'
'
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Weekend Sunday Date")
.PivotItems("20090802").Visible = False
.PivotItems("20090809").Visible = False
.PivotItems("20090816").Visible = False
.PivotItems("20090823").Visible = False
.PivotItems("20090830").Visible = False
.PivotItems("20090906").Visible = False
.PivotItems("20090913").Visible = False
.PivotItems("20090920").Visible = False
.PivotItems("20090927").Visible = False
.PivotItems("20091004").Visible = False
.PivotItems("20091011").Visible = False
.PivotItems("20091018").Visible = False
.PivotItems("20091025").Visible = False
.PivotItems("20091101").Visible = False
End With
End Sub
How would you identify the range of dates and then pick the last four to be visible?
|
|
|
|
|
hi,
instead of writting the date as "20091101" generate the date.
|
|
|
|