Compile Error: variable not defined (VB6) - vb6

Hi I'm trying to link a database from Access to VB6. Then I tried to display the contents of a record from the database in a table form using ListView. I have checked both References and Components needed but I keep getting the same error. It says Compile Error: variable not defined for the header of this code:
Sub dbconnection()
connect.Open "Provider=Microsoft.jet.OLEDB.4.0;"
Data Source = "C:\Users\Admin\Documents\werk\LAST SEM!!!!!!!!\CSC301\Foot-it!\ftsdb.mdb"
End Sub
I have already declared Option Explicit at the top of the code as shown here:
Option Explicit
Dim connect As New ADODB.Connection
Dim rs As New ADODB.Recordset
I'm really new to this and honestly I just looked this up on Youtube. Any type of help will be much appreciated. Thanks in advance.
PS: If you need more details just comment and I'll edit for your clarification.

Your problem is because the 'Data Source' bit needs to be part of the previous line. You're supposed to open a connection by specifying both the connection driver and the parameters in the open statement.
Try this:
connect.Open "Provider=Microsoft.jet.OLEDB.4.0;Data Source=C:\Users\Admin\Documents\werk\LAST SEM!!!!!!!!\CSC301\Foot-it!\ftsdb.mdb"

Data Source = "C:\Users\Admin\Documents\werk\LAST SEM!!!!!!!!\CSC301\Foot-it!\ftsdb.mdb"
"Data" used to be a reserved word in earlier versions of BASIC.
I don't work with SQL much, but I'm guessing what you wanted to do was something more like:
connect.DataSource = "C:\Users\Admin\Documents\werk\LAST SEM!!!!!!!!\CSC301\Foot-it!\ftsdb.mdb"
or
rs.DataSource = "C:\Users\Admin\Documents\werk\LAST SEM!!!!!!!!\CSC301\Foot-it!\ftsdb.mdb"
Others in here with more ADO experience might be able to confirm which, if either, is the correct one.
EDIT: Please refer to Luke G.'s answer, as it is the correct answer.
Mine, though marked as accepted, I realize is incorrect.

Related

How do strings work in VB

I am currently reworking an Intranet Website using Active Directory, and the ancient developer did everything in VB, I am now developing it in C# and a bunch of recent technologies. So I am going through his code for a few functionalities I'm having a hard time with (I did a quick overview of VB to see how it works globally) and I don't understand how strings work here.
For example, there is the following declaration:
Dim sGroups, oGroup
sGroups=activeDirectoryUserObject.memberOf //Returns groups that user belongs to
set oGroup = GetObject("LDAP://" & sGroups)
For j = 0 To UBound(sGroups)
Set oGroup = GetObject("LDAP://" & sGroups(j)) //Here!!
What is sGroups(j)? To me sGroups is a string not an array, so what's going on here?
Thanks for your help!
Leonard:
It appears that sGroups(j) is a string and that the (j) part is a counter. Possible that this is being used if the user belongs to more than one group.
Sincerely,
Joe
Strings are not indexed in VBS/VBA/VB6. And the method of indexing is different in VB.NET. So if the object is indexed, "sGroups(j)" it's not a string.
The obvious way to work out what sGroups is, would be to look at activeDirectoryUserObject and it's memberOf attribute. Which you should have done, and you should have included that code here, so that we could see it.
If it's an externally defined object, for which you have no documentation, you can use the Typename() function or VarType function to extract the information. Since this is a website using ASP scripting, either it's going to be a variant array, or the script is completely broken.
Either is possible, since the script fragment you have provided makes no sense by itself (see also the redefinition of oGroup with no code that uses it).

SSRS error on preview : "The size necessary to buffer the XML content exceeded the buffer quota" hides original error

I understand that there is definitely something wrong with my report (e.g. columns missmatcch) and I need to correct it but what I see is the WCF error message that hides actual problem and exactly this hiding irritates me much more than original problem: columns missmatch.
I guess we need to adjust the WCF 'buffer size' and we will get original problem message. But where is the config file?
Text search of "system.serviceModel" in the C:\Program Files (x86)\Microsoft Visual Studio 10.0 doesn't bring good idea...
P.S. Since this is just preview of report I do not think that it is SSRS configuration problem. Problem localised somewhere in DevStudio process or int the DevStudio's internal web server process ...
P.P.S Please help me too improve the question. I see that responders doesn't understand what kind of help I need.
I have encountered multiple "flavors" of this bug in SSRS Preview. It seems the renderer for Preview mode is quite fragile.
There is a simple way to solve this. Ignore the error and attempt to upload the RDL file to your reporting server. The uploader will happily tell you exactly what is wrong with your file - it will tell you exactly what field has a problem and what that problem is. If there are multiple errors, you will get told each and every field and the error associated with each one.
I can create this bogus XML buffer error with any of the following:
Add a new Tablix, start to connect it to a dataset, then cancel out.
Copy/paste some text into a textbox from a MS Word document where one or more lines have a negative right indent (right column end is outside page margin).
Connect a dataset with a varchar(8000) returned value.
Please Check if any of your report items are referencing fields that are not in existing dataset scope.
This indeed worked for me.
See Below link for more information:
http://connect.microsoft.com/SQLServer/feedback/details/742913/ssdt-reporting-services-designer-error
I have seen this error when adding a new field to an existing dataset by clicking "Refresh Fields".
The dataset source was a stored procedure. The result was only a few of original fields showed up in the dataset field list and not the new field. If I tried to preview the report I get XML buffer error.
Workaround was to not refresh fields but hit add new field and type the new field name into the dataset properties field last.
Worked fine after that.
I got this error again today.
I had created a table to hold data to replace two slow queries. I changed some names to clean up the process.
I think the error actually means that there are so many problems with my report that the buffer holding the various error messages isn't large enough which leads to the error message.
The size necessary to buffer the XML content exceeded the buffer quota
Of course this should be an easy fix but Microsoft has said that they will not fix it.
https://connect.microsoft.com/SQLServer/feedback/details/742913/ssdt-reporting-services-designer-error
EDIT: I've updated my answer based on having fixed the issue.
I'm currently experiencing this problem after having changed multiple stored procedures and updating the dataset names in the SSRS report.
And when I try to run the preview I get the exact same error.
As it turns out, after investigating the issue, the problem was that I had changed the name property of my datasets.
There several places in my report where formulas or expressions use the old name properties of the datasets I renamed. After reverting the dataset names back, I managed to get the real errors like missing fields etc. atcual errors came back after I set my dataset name properties back to what they were.
I only changed the name property back to what it was, the stored procedure names were correctly referring to my renamed stored procedures.
I had this problem when after copying and pasting a tablix, it changed CDbl in a formula to Microsoft.ReportingServices.RdlObjectModel.ExpressionParser.VBFunctions.CDbl. I opened up the XML and removed all instances of "Microsoft.ReportingServices.RdlObjectModel.ExpressionParser.VBFunctions." and the report then worked.
For a working report, when I tried to add a column it gave me this error. I edited the .rdl file using notepad++. After SSRS prompt to reload the change from disk, it worked without issues.
I got this error after copying my Custom Code to Visual Studio for hightlighting the code for better readability. Well, Visual Studio added class definitions to the beginning and end of the file. After editing code, I pasted it back to report Custom Code, then got this error. Fix was just to remove class definitions (Public Class Class1 and End Class) from Custom Code. So, check your Custom Code also (if any).
I got this error after adding some new parameters to an existing report.
For some reason when I created the parameters first then modified the Dataset to use the new parameters I got the error, but when I modified the Dataset first then added the parameters second and I did not get the error.
This seemed like very strange behavior to me so I tested it by restoring the report from repository and repeating the process three times with each method, and had identical behavior every time.
I am also facing this problem. I solve this Find and replace
Microsoft.VisualBasic.Interaction.iif ==> iif
Microsoft.ReportingServices.RdlObjectModel.ExpressionParser.VBFunctions.cdbl
==> cdbl
I hope this may helps someone. Thanks
Possible root causes
Parameter name is incorrect(case/order)
Accessing non-existing property.
and many more...
Solution: To get the exact error message are
Deploy SSRS report and find the error : Suggested by "Kim Crosser" already
Remove the section(SSRS/Report content) temporarily you feel is error free to free space in buffer so that you can get actual error message. Later add sections back to the page(removed earlier).
I had the same error message and it was totally caused by my doing. It's a bit embarrassing, but if it helps someone out then great! I had accidentally copied my dataset query that included a small sub select statement within it, which I was using to check parameter/variable values.
Another solution is to open the .rdl file in Report Builder 3.0 (as opposed to Visual Studio) and try to preview it. I found this gave me the details of the error, although if more than one error is present it only shows the first.
I previously binded a TextBox to
Fields!FieldName
and fixed it with
Fields!FieldName.Value
With that said, and with the other answers posted as well, this error happens in different flavors. My issue was fixed after I had the field property "Value" included.

How to change value in a QTP data table?

Could anyone help me figure out how to enter a value into a QTP data table using VBScript? I'm trying the following line, but it doesn't seem to work:
datatable.Value(D,"sheetName")="A"
What is wrong? I am used to other languages and just cannot see any problem here.
What is the D you're using? Is it a variable holding the column name? If not and you mean to use the D column then you have to quote it so that QTP (VBScript actually) knows you mean the string "D".
datatable.Value("D","sheetName")="A"
I know zilch about QTP tool. However, your syntax looks correct based on this example. (see heading Adding Value to you a local sheet
Based on the information given, I would take a stab that you may have not referenced the QTP DLL, you have ON ERROR RESUME NEXT in your code AND you do not have OPTION EXPLICIT set at the top of your module.
Start by making sure you have the correct DLL referenced and adding this line to the top of the code:
OPTION EXPLICIT
If you've done that, then add more information that could help one deduce the problem (e.g. full code sample).
The way that you get data from datatable in QTP is, first import the Excel sheet into your datatable (Either Global or Local), then try to get data from datatable using following Syntax
Datatable(columnName,dtGlobalSheet) if imported in Global sheet
Datatable(columnName,dtLocalSheet) if imported in Local sheet
Importing Data
myFile = "C:\datasheet\excelone.xls"
datatable.Importsheet myFile,1,Global
Enter Value
DataTable("Coumn1Data", dtGlobalSheet)
This way you can get data from Excel sheet.
Thanks,
Karthik

VB6 intellisense problems

I am writing a simple application that utilizes option(radio) buttons in vb6.
I am attempting to make different buttons and labels appear based on which optionbutton has been selected. I attempted to use an if statement that looks like this:
If (EditOpenTicketRadioButton.value = True) Then
label.visible = true
elseIf(...) then....
and on.
things start acting strange when I begin to type the period after EditOpenTicketRadioButton. the only options that intellisense gives me are Count, Item, LBound, and UBound. I know from internet examples It should be like the above example right? it will not run with that syntax it gives me an error that states: compile Error: Method or data member not found. then it points me to the Load method for my form...
If anyone can help me make sense of this it would be greatly appreciated.
Thanks in advance!
From the (very, very) limited information you gave, I can only assume EditOpenTicketRadioButton is a victim of extremely poor name choice and is actually an array of radio buttons.
If that's the case, you need to figure out which button you mean, and use it like EditOpenTicketRadioButton(0) or whatever.

How do I distinguish ADO Database Errors in VB6

I'm using ADO to read and write a database from a VB6 application. Naturally, the database access may return errors. I am currently displaying an error message by a method borrowed from here http://www.devx.com/tips/Tip/13483 but I would like, in my code, to act differently according to whether the error is an index constraint violation, a column constraint violation, trigger forced an error and so forth.
Would I be right in looking in the .Number part of the first error in the collection? Or the last?
And does anyone know where I might find a list of the error numbers used here?
ErrorValueEnum specifies the type of ADO run-time error with a list of ADO error codes.
No, Err.Number will only contain the error from the ADO standpoint. Database internal errors are database specific. For example, in Oracle nearly all errors that you'd care about match the pattern ORA-(\d{5}) and you could pull that value from Err.Description to find out the exact error code.
More careful study of the data structure returned reveals it has a member .SQLState, which contains what I am looking for. Apologies to Dan and systempuntoout for not noticing this before.

Resources