?
Solved

Through Automation Object COM function, accessing SQL Server Database

Posted on 2004-04-20
3
Medium Priority
?
904 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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 1500 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

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

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

Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
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…
In this video, Percona Director of Solution Engineering Jon Tobin discusses the function and features of Percona Server for MongoDB. How Percona can help Percona can help you determine if Percona Server for MongoDB is the right solution for …
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA: https://www.percona.com/resources/we…
Suggested Courses
Course of the Month11 days, 12 hours left to enroll

752 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