Solved

Through Automation Object COM function, accessing SQL Server Database

Posted on 2004-04-20
3
882 Views
Last Modified: 2007-12-19
I created Automation Object (COM) using Delphi. I created a function in that COM which will gather some data from some text files and insert them into MS-SQL table. Every time I call that function it should connect to the database to post new data.

I succeeded in gathering my data from text file throu' the method from COM object but I failed to connect to the database. I tried to use  ODBC(with BDE components, with ADO Components)

In more details:

COM Automation Object has function which has following input parameters as strings & get output string parameter. It sends ODBC DataSource( to access MS SQL Server), Table Name, UserID & Pwd parameters to update database.

    function ImpExec(const pDataSource, pTable, pUser ID, pPwd: WideString): WideString; safecall;

From Delphi exe Application, when I try to call this method providing input parameters by using the above Object, it give the following error

    'Project raised exception class EOleException with message 'Catastrophic failure'

What could be the error, I couldn't access database by using this method from that COM Object.

Also how to debug the Com Object from exe application.

Expecting a solution soon.
0
Comment
Question by:HamidHossain
  • 2
3 Comments
 
LVL 12

Expert Comment

by:Ivanov_G
ID: 10866897

   1) Let's debug it :
         - build the COM with debug into and register it
         - while opened in delphi go to Run / Parameters and for host application put C:\WINNT\System32\dllhost.exe
         - put a break point in the beggining of the method and run it.

   2) Open another Delphi and open the client. Run it and call the server method. The first Delphi should stop on the first line of the COM object
0
 

Author Comment

by:HamidHossain
ID: 10867870
I built COM by using Automation Object in ActiveX Library.

You stated that  'build the COM with debug into and register it'.  what it means 'debug into', is it a option we have to give in COM or where?

As you told I set Run / Parameters for host application as  C:\WINNT\System32\dllhost.exe. Then I put a break point in the beginning of the method & run that COM it tells ' Could not find program C:\WINNT\System32\dllhost.exe'

Then I opened another Delphi client application & run it by calling that server method. It is not going  & stopping on the first line of COM method in Server Project. Still it stops only  at client.

Following is the coding in Client.

( CP1 : IComImpACSObj; -- Server Interface Object

CP1 := CoComImpACSObj.Create as IComImpACSObj; -- Creating COM Object instance

CP1.ImpExec('ACS_DS', 'trans', 'sa', ''); - it stop here & tells 'Project raised exception class EOleException with message 'Catastrophic failure' )
0
 
LVL 12

Accepted Solution

by:
Ivanov_G earned 500 total points
ID: 10877277

  Yes, I see - in fact you didn't debugged the server

  Register the ActiveX - Run / Register ActiveX Server.
  if you are on XP - C:\WINDOWS\system32\dllhost.exe.

  TRY THIS : You can also put as host application the client that use this ActiveX - Your Client Application. Then you need only one Delphi instance.

   If you do it correctly - it should stop.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
Need to grow your business through quality cloud solutions? With everything required to build a cloud platform and solution, you may feel like the distance between you and the cloud is quite long. Help is here. Spend some time learning about the Con…
A company’s greatest vulnerability is their email. CEO fraud, ransomware and spear phishing attacks are the no1 threat to a company’s security. Cybercrime is responsible for the largest loss of money to companies today with losses projected to r…

932 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now