Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C#] Business Objects - VBA - Csharp

Pagina: 1
Acties:
  • 147 views sinds 30-01-2008
  • Reageer

  • ekx
  • Registratie: Februari 2002
  • Laatst online: 22-10 20:51
De volgende code die werkt met de referentie ingesteld op Business Objects 6.5

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Sub general_BO[...](rep As String, xls As String, log As String, number_of_sheets As Integer)
    Dim bosdk As New busobj.Application
[...]    

    Set bosdk = New busobj.Application
    Call bosdk.LoginAs("?", "?", False, "?")
   
    bosdk.Documents.Open rep
    bosdk.ActiveDocument.Refresh
    
    bosdk.ActiveDocument.Save
    bosdk.ActiveDocument.SaveAs xls
[...]
End Sub


Dit is code, geschreven in Microsoft Access, VBA.
Nu had ik die code graag geschreven in CSharp.
Maar krijg steeds de volgende foutmelding

code:
1
Unable to cast COM object of type 'busobj.ApplicationClass' to interface type 'busobj.IApplication'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{A2AD6F01-5766-11D0-AF14-00A0C912DCDC}' failed due to the following error: The object invoked has disconnected from its clients. (Exception from HRESULT: 0x80010108 (RPC_E_DISCONNECTED)).


met de volgende TESTcode
code:
1
2
3
4
5
6
7
8
9
10
11
public void ExtractVolumesFromBOtoExcel()
        {
            busobj.Application app = new busobj.Application();
            int i=0;
            while(!app.Variables["BOUSER"].ToString().Equals(""))
            {
                System.Windows.Forms.MessageBox.Show("Test");
            }
            app.LoginAs("?", "?", true, "?");

        }


De zoektocht op het Internet levert me weinig bruikbaar op, tenzij je spreekt over VBA code. :O
Over Csharp vind ik nagenoeg niets. Meestal gaat het over webservices of over crystal reports.
Het gaat hier over Business Objects 6.5 |:( Upgraden van software is jammergenoeg geen optie.

Wat ik dus wil doen:
  • Code schrijven vanuit .NET-applicatie, zodat ik een BO-rapport automatisch kan opslaan in Excel-formaat. Ik zal al blij zijn als ik ergens een referentie kan vinden. _/-\o_
  • Een andere oplossign zou zijn, dat ik via code, Excel/Word/Access Bestand aanmaak, en daarin vba-code laat uitvoeren, die ik aanmaak in code. }:O
  • Zou het mogelijk zijn vanuit J# of VB.NET?
Kan iemand me in een richting duwen i.v.m. deze twee oplossingen?

  • ekx
  • Registratie: Februari 2002
  • Laatst online: 22-10 20:51
schop?

  • DrDelete
  • Registratie: Oktober 2000
  • Laatst online: 21:50
Op welke coderegel krijg je de foutmelding dan precies ? En wil je dezelfde VBA code herschrijven naar C#, dan zie ik toch andere C# code in jouw voorbeeld :/

[ Voor 47% gewijzigd door DrDelete op 01-09-2007 15:05 ]


  • ekx
  • Registratie: Februari 2002
  • Laatst online: 22-10 20:51
Ik wil inderdaad hetzelfde bereiken, of een goede duw in de rug krijgen, want ik zit slot.
Dat hier twee keer niet hetzelfde voorbeeld staat, maakt weinig verschil uit.
Ik krijg de foutmelding vanaf ik een property of methode aanroep van m'n application object.
Dus doe ik
code:
1
app.LoginAs("?","?",false,"?");

dan krijg ik die exceptie. Ook in debug-modus, als ik wil gaan kijken welke property's er ingevuld zijn, krijg ik daar die exceptie in te zien.

  • DrDelete
  • Registratie: Oktober 2000
  • Laatst online: 21:50
Oke, je werkt met COM. Heb je gecheckt of je misschien niet oude versies hebt staan in de registry? Check de CLS-ids in de registry, doe een cleanup met een regclean tool en doe opnieuw een registratie van de COM module. Maak daarna opnieuw een interop door de COM module te selecteren en te referencen.

Check ook of je de juiste MDAC hebt geinstalleerd...

Ben benieuwd.

[ Voor 8% gewijzigd door DrDelete op 06-09-2007 11:10 ]


  • ekx
  • Registratie: Februari 2002
  • Laatst online: 22-10 20:51
Bedankt voor de input, maar het blijft zonder resultaat... Heb het gedaan regcleaner
CLS-id staat in orde.
InvalidCastException, steeds

[denkpiste]
Maar als de COM niet goed registreerd zou gestaan hebben, waarom lukt de code dan wel in VBA?
[/denkpiste]

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Misschien iets met groottes van datatypes etc. Is er geen .NET versie van dat component?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • ekx
  • Registratie: Februari 2002
  • Laatst online: 22-10 20:51
Is er geen .NET versie van dat component?
als er één bestaat, van BO 6.5, laat me weten! ik vind er geen...

Die fix zou idd wel eens een oplossing kunnen zijn. Maar hij moeten kunnen geïnstallleerd worden door een Admin... Binnen twee weken (kga op verlof), kan ik het eens vragen aan de IT dienst.

EDIT1:
(ps: hoe ben je op dat KB gekomen?) heb al héél wat googles erop zitten...

EDIT2:
Momenteel zit ik op dit pad:
/* had een kleine procedure geschreven in VBA, die het rep.bestand (BO) opent, refreshed, save as doet en sluit.
Aangezien ik enkel hier BO lokaal heb staan, en de rest in Citrix-omgeving, is dat ook geen optie.
Dus, heb een kopie gemaakt van dat bestand, macro'tje in dat bestand gestoken dat vanaf het geopend wordt, opgeslaan wordt als, en BO weer sluit...

Hoe roep ik tegen C#, dat hij een bestand moet openen, met de standaard registreerde applicatie, waarmee hij verbonden is?
Als ik dat kan hebben, ben ik gelukkig tegen vrijdag...lange termijn, moet die fix natuurlijk geinstalled worden...

[ Voor 55% gewijzigd door ekx op 06-09-2007 12:57 ]


  • Redshark
  • Registratie: Mei 2002
  • Laatst online: 23:33
Misschien is [url=/http://gathering.tweakers.net/forum/list_messages/1155449]dit[/] wat voor je? Ik weet uiteindelijk niet wat er nu precies gedaan is , maar misschien zegt het jou wel iets?

  • DrDelete
  • Registratie: Oktober 2000
  • Laatst online: 21:50
ekx schreef op donderdag 06 september 2007 @ 12:49:
[...]

als er één bestaat, van BO 6.5, laat me weten! ik vind er geen...

Die fix zou idd wel eens een oplossing kunnen zijn. Maar hij moeten kunnen geïnstallleerd worden door een Admin... Binnen twee weken (kga op verlof), kan ik het eens vragen aan de IT dienst.

EDIT1:
(ps: hoe ben je op dat KB gekomen?) heb al héél wat googles erop zitten...

EDIT2:
Momenteel zit ik op dit pad:
/* had een kleine procedure geschreven in VBA, die het rep.bestand (BO) opent, refreshed, save as doet en sluit.
Aangezien ik enkel hier BO lokaal heb staan, en de rest in Citrix-omgeving, is dat ook geen optie.
Dus, heb een kopie gemaakt van dat bestand, macro'tje in dat bestand gestoken dat vanaf het geopend wordt, opgeslaan wordt als, en BO weer sluit...

Hoe roep ik tegen C#, dat hij een bestand moet openen, met de standaard registreerde applicatie, waarmee hij verbonden is?
Als ik dat kan hebben, ben ik gelukkig tegen vrijdag...lange termijn, moet die fix natuurlijk geinstalled worden...
t.a.v. EDIT1: de hexcode in google stoppen met de fouttekst, 1 hit was OK.

t.a.v. EDIT2: zie http://www.thescarms.com/dotnet/Process.aspx
Pagina: 1