RunTime Error 380 - Specified Fieldname not found in object - dll

I am running a VB6 application with a Pervasive V9.5 Database. I am receiving a RunTime Error 380 - Specified Fieldname not found in object when only 2 of my users are trying to log in. Rest of the office is fine...Does anyone have any idea what the issue could be? I have searched for a few hours now and can't find anything helpful.
The login uses a VAccess control during the login. Could this be caused by a missing DLL or OCX file on the client machine?
Any suggestions would be appreciated as I am out of ideas.
Edit:
With vaLogon
.RefreshLocations = True
.DdfPath = DataPath
.TableName = "USERLOG"
.Location = "USERLOG.MKD"
.Open
If .Status <> 0 Then
ErrMsg = "Error Opening File " + .TableName + " - Status " + str$(.Status) + vbCrLf + "Contact IT Department"
End If
End With
I have enabled VADebug mode and on the workstation in question, when the app is launched I receive the DDF error:
The VAccess control was unable to open FIELD.DDF at the specified DDFpath. This may result from an error in the DDFPath or refreshlocations properties, or from a corrupt FIELD.DDF.
Then an error message:
ACBtr732 - Btrieve status = 170, Brtrieve Opertation Code = 0, VAccessName = vaLogon, VALocation =
Then my login prompts for username and password and once the Login button is clicked is when the user receives the 380 Runtime.

The error 170 means "Database login required. Authentication to the database failed due to a wrong or missing username." Are you sure the Datapath variable has the proper path in it?
Can you connect to the database through the Pervasive Control Center? Does it require a user/password?
A corrupt DDF on the server would typically affect all users.

Related

Excel power query, error handling for fallback connection/OleDb data source

I have a PowerQuery connected to DB2 Data Source, but because of some kind of load balancing the DB Server changes periodically (ip also changes), There is no way for me to know beforehand which data source (IP), I should use until I try it and see that it errors out, then I have to use the other one, I googled for error handling in PowerQuery and found some examples of error handling but this examples did not apply to my case, most of them handled errors AFTER the connection was made or were preventing errors on missing columns or files not found, I tried to adjust the examples to my case but was not able to.
What I want is just try one IP and if it fails then use the other one.
let
//fParametros("ParamQuery",1) is the "standard" Server/Ip address (provider=IBMDADB2.IBMDBCL1;data source=CP3;location=pn8us7ldbcp3.us.mycompany.com:5912)
dbSource = fParametros("ParamQuery",1),
//fParametros("ParamQuery",5) is the "Alternate" Server/Ip address (provider=IBMDADB2.IBMDBCL1;data source=CP3;location=pn8us7ldbcp3h.us.mycompany.com:5912)
AltdbSource = fParametros("ParamQuery",5),
pOrden = Text.From(fParametros("ParamQuery",2)),
//Create the query
dbQuery = "SELECT SAPCP3.vbak.VBELN SO , SAPCP3.vbap.posnr PoLine , SAPCP3.vbep.ETENR Sch_Line , SAPCP3.vbap.matnr Part_Number,SAPCP3.makt.maktx Description,SAPCP3.vbap.kwmeng Qty ,SAPCP3.vbep.BMENG Conf_qty ,SAPCP3.vbap.vrkme UOM ,SAPCP3.vbap.netpr SalesPrice ,SAPCP3.vbap.kpein LotSize FROM SAPCP3.vbak JOIN SAPCP3.vbap ON SAPCP3.VBAp.VBELN = SAPCP3.VBAK.VBELN JOIN SAPCP3.vbep ON SAPCP3.vbep.vbeln = SAPCP3.vbak.vbeln AND SAPCP3.vbap.posnr = SAPCP3.vbep.posnr JOIN sapcp3.makt ON sapcp3.vbap.matnr=sapcp3.makt.matnr WHERE SAPCP3.VBAK.VKORG = '4000' AND (SAPCP3.vbep.edatu >= '20190701') AND SAPCP3.vbak.VBELN ="& pOrden & " ORDER BY SAPCP3.vbak.VBELN",
//Get the data
Source = OleDb.DataSource(dbSource, [Query=dbQuery]),
//Failed Attempt to handle the error:
TestForError= try Source,
//next line does not work, I get error saying Source is already defined/declared
Source = if TestForError[HasError] then OleDb.DataSource(AltdbSource, [Query=dbQuery]) else OleDb.DataSource(dbSource, [Query=dbQuery])
in
Source
I also Tried the following:
.
.
.
//Get the data
Source = OleDb.DataSource(dbSource, [Query=dbQuery]),
//Failed Attempt to handle the error:
TestForError= try Source,
Output = if TestForError[HasError] then OleDb.DataSource(AltdbSource, [Query=dbQuery]) else OleDb.DataSource(dbSource, [Query=dbQuery])
in
Output
//This last part works if the dbSource is correct, but if it is not it doesnt catch the error and gives me the Connection error shown below:
DataSource.Error: OLE DB: SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS". Location where the error was detected: "172.16.0.1". Communication function detecting the error: "connect". Protocol specific error code(s): "10061", "", "". SQLSTATE=08001
Details:
DataSourceKind=OleDb
DataSourcePath=data source=CP3;location=pn8us7ldbcp3.us.mycompany.com:5912;provider=IBMDADB2.IBMDBCL1
Message= SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS". Location where the error was detected: "172.16.0.1". Communication function detecting the error: "connect". Protocol specific error code(s): "10061", "", "". SQLSTATE=08001
ErrorCode=-2147467259
I want to connect to dbSource (172.16.0.1) and if it is not possible then connect to AltdbSource (172.16.0.2)
Currently I have 2 identical excel sheeets and user needs to open one or the other if he gets the connection error, I want it to change automatically.
I'm guessing that TestForError = try OleDb.DataSource(BadSource) isn't working because OleDb.DataSource(...) returns a table value than only produces an error when trying to enumerate rows.
What if you change TestForError to drill into the first row if it exists:
TestForError= try Source{0}?,
If that still doesn't work, next try indexing into a table cell in the first row.

Documentum error : [DM_STORAGE_E_NOT_ACCESSIBLE]

I am trying to get the content of all the documents (current version) from a documentum source using the following code
IDfSysObject document = (IDfSysObject) session.getObject(new DfId(eachFileMetadata.get(some document id).toString()));
ByteArrayInputStream docContent = document.getContent();
I am getting the following error:
DfException:: THREAD: Thread-585; MSG: [DM_STORAGE_E_NOT_ACCESSIBLE]error: "Storage area dist_store_a_store_010 is not currently accessible. Reason: errno: 145, message: Connection timed out."; ERRORCODE: 100; NEXT: null
at com.documentum.fc.client.impl.docbase.DocbaseExceptionMapper.newException(DocbaseExceptionMapper.java:57)
at com.documentum.fc.client.impl.connection.docbase.MessageEntry.getException(MessageEntry.java:39)
at com.documentum.fc.client.impl.connection.docbase.DocbaseMessageManager.getException(DocbaseMessageManager.java:137)
at com.documentum.fc.client.impl.connection.docbase.netwise.NetwiseDocbaseRpcClient.checkForMessages(NetwiseDocbaseRpcClient.java:329)
at com.documentum.fc.client.impl.connection.docbase.netwise.NetwiseDocbaseRpcClient.applyForInt(NetwiseDocbaseRpcClient.java:600)
at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection$6.evaluate(DocbaseConnection.java:1343)
at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.evaluateRpc(DocbaseConnection.java:1141)
at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.applyForInt(DocbaseConnection.java:1336)
at com.documentum.fc.client.impl.docbase.DocbaseApi.makePuller(DocbaseApi.java:630)
at com.documentum.fc.client.impl.connection.docbase.RawPuller.<init>(RawPuller.java:22)
at com.documentum.fc.client.impl.session.Session.makePuller(Session.java:3756)
at com.documentum.fc.client.impl.session.SessionHandle.makePuller(SessionHandle.java:2468)
at com.documentum.fc.client.content.impl.BlockPuller.<init>(BlockPuller.java:27)
at com.documentum.fc.client.content.impl.PusherPullerContentAccessor.buildStreamFromContext(PusherPullerContentAccessor.java:40)
at com.documentum.fc.client.content.impl.PusherPullerContentAccessor.getStream(PusherPullerContentAccessor.java:28)
at com.documentum.fc.client.content.impl.ContentAccessorFactory.getStream(ContentAccessorFactory.java:37)
at com.documentum.fc.client.content.impl.Store.getStream(Store.java:63)
at com.documentum.fc.client.content.impl.DistributedStore___PROXY.getStream(DistributedStore___PROXY.java)
at com.documentum.fc.client.content.impl.Content.getStream(Content.java:185)
at com.documentum.fc.client.content.impl.Content___PROXY.getStream(Content___PROXY.java)
at com.documentum.fc.client.content.impl.ContentManager.getStream(ContentManager.java:84)
at com.documentum.fc.client.content.impl.ContentManager.getStream(ContentManager.java:53)
at com.documentum.fc.client.DfSysObject.getContentEx3(DfSysObject.java:1952)
at com.documentum.fc.client.DfSysObject.getContentEx2(DfSysObject.java:1942)
at com.documentum.fc.client.DfSysObject.getContent(DfSysObject.java:1932)
at com.documentum.fc.client.DfDocument___PROXY.getContent(DfDocument___PROXY.java)
the above error occured when I am trying to get the content of a document,can anyone please help me??
It seems your storage location is not accessible.
Query your dm_location for storage_01 and find out the file_system_path attribute value of this record.
If your content servers are on Unix servers, then check if the mount with file_system_path value is available using df- h command.
If your content servers are on Windows, then check if you have mapped drive available with file_system_path value.
If you see them available, I will recommend to create and access files on this file system. Sometimes there are issues with stale connection on NFS mounts..

Invalid character value for cast specification sometimes

Im currently investigating a bug that just happens sometimes. I have not been able to see any patterns to the behavior yet. I have a vb6 com+-application that communicates with the server.
Err: Invalid character value for cast specification. (&H80040E21)
Src: Microsoft OLE DB Provider for SQL Server
Stacktrace:
GetClientRS("SELECT * FROM Visit where GUID=?")
GetVisit("('{5EF4A26A-0909-4371-97F7-A2597CB7ADE3}')")
This is the error that happens sometimes. Maybe 1-2 times for every 5 times it is called. I have tried a trace in SQL server profiler but I am unable to detect any errors.
Does anyone have any ideas I could try?
Edit:
Code for calling the command:
GetVisit:
Set cmd = CreateCommand("SELECT * FROM dbo.per_Visit WHERE GUID=?")
cmd.Parameters.Append cmd.CreateParameter(, adGUID, , , SafeGUID(sGUID))
Set GetVisit = GetClientRS(cmd, True)
SafeGUID:
If Mid$(sGUID, 1, 1) <> "{" Then
sGUID = "{" & sGUID & "}"
End If
SafeGUID = sGUID
SafeGUID function is probably not clever enough.
When
sGUID = "('{5EF4A26A-0909-4371-97F7-A2597CB7ADE3}')"
the value actually passed as parameter is
{('{5EF4A26A-0909-4371-97F7-A2597CB7ADE3}')}
which is not a valid GUID.

Getting ORA Oracle error code using ODP.net?

i use below DLL to connect direct to oracle from client.
oci.dll, Oracle.DataAccess.dll, oraociicus11.dll, OraOps11w.dll, orannzsbb11.dll, oraocci11.dll, ociw32.dll
connection string:
Dim oradb As String = "Data Source=(DESCRIPTION=(ADDRESS_LIST=" _
+ "(ADDRESS=(PROTOCOL=TCP)(HOST=172.20.128.33)(PORT=1521)))" _
+ "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=bipcdb)));" _
+ "User Id=msavameri;Password=123456;"
but when I run application the following error occurs:
ORA-28547: connection to server failed, probable Oracle Net admin error
Here is a list of files needed by Oracle.DataAccess:
oci.dll
Oracle.DataAccess.dll
orannzsbb11.dll
oraociei11.dll
OraOps11w.dll
Be sure that all of these files are present in the client directory. It looks like the list you gave may be missing oraociei11.dll.

qt mysql query giving different result on different machine

Following code works on my pc but gives error on other pc's. how is it possible to run this successfully on all machines.
QSqlQuery query;
QString queryString = "SELECT * FROM " + parameter3->toAscii() + " WHERE " + parameter1->toAscii() + " = \"" + parameter2->toAscii() + "\"";
bool retX = query.exec(queryString);
What pre requisite should be fulfilled for this to run on any pc
In troubleshooting, if you isolate your query and it returns the result you anticipated ( such as you have done utilizing qt creator to verify the query returns a result of true), the next step would be to take a close look at your code and verify that you are passing the proper parameters into the query for execution.
I have a virgin machine I utilize for this purpose. I am a software engineer by trade and I am fully aware that i have a ton of software installed on my PC which the common user may/will not have installed. So the virgin allows me to test the code in stand-alone form.
I suggest implementing a message box prior to the execution of your query which shows the query to be executed. This will verify the query is correct on the "other machines".
Certain dll's were needed. in my case qtguid4.dll, qtcored4.dll and qtsqld4.dll. There was a size difference. Once matched it worked on a pc. However, on other pc's i still get an error "The application failed to initialize 0xc000007b ....."
How is it possible to make an application run.
Brgds,
kNish