RTD Server verzendt geen update meldingen naar meerdere exemplaren van Excel

BELANGRIJK: Dit artikel is vertaald door middel van automatische vertalingssoftware van Microsoft en is mogelijk nabewerkt door de Microsoft Community via CTF-technologie (Community Translation Framework) of door een menselijke vertaler. Microsoft biedt zowel automatisch vertaalde, door mensen vertaalde en door de community nabewerkte artikelen aan, zodat er in meerdere talen toegang is tot alle artikelen in onze Knowledge Base. Een vertaald of bewerkt artikel kan fouten bevatten in vocabulaire, syntaxis of grammatica.. Microsoft is niet verantwoordelijk voor eventuele onjuistheden, fouten of schade ten gevolge van een foute vertaling van de inhoud van een bericht of het gebruik van deze vertaalde berichten door onze klanten.

De Engelstalige versie van dit artikel is de volgende: 284883
Dit artikel is gearchiveerd. Het wordt aangeboden in de huidige vorm en wordt niet meer bijgewerkt.
Symptomen
Wanneer u meerdere exemplaren van Microsoft Office Excel samen met uw RTD (Realtimedata) server, verschijnt het volgende bericht:
De server met real-time gegevens 'servername.classname' is niet reageert. Wilt u proberen de server opnieuw op te starten in Microsoft Excel?
De RTD-server is dus geen update meldingen verzenden meerdere exemplaren van Excel.
Oorzaak
Wordt dit bericht weer gegeven als de RTD-server is een ActiveX EXE dat is gebouwd voor voor meerdere toepassingen instancing, standaard instelling ActiveX EXE projecten in Visual Basic. Kan een ActiveX EXE die is MultiUse door clients worden gedeeld. Afzonderlijke instanties Excel delen RTB-servers niet. Wanneer Excel wordt gestart een RTD-Server, roept Excel de RTD-ServerServer Startmethode en geeft het een verwijzing naar deTerugbellenobject voor dat exemplaar van Excel. Dus als twee exemplaren van Excel probeert te delen dezelfde RTD-server, het tweede exemplaar wordt vervangen door deTerugbellenobject voor het eerste exemplaar. Dit probleem wordt, verliest hetTerugbellenobject voor het eerste exemplaar.
Oplossing
SingleUse instancing voor EXE ActiveX-componenten gebruiken die zal fungeren als RTB-servers voor Excel. Wanneer u ActiveX EXE componenten als bouw SingleUse, elk exemplaar van Excel heeft een eigen exemplaar van het OTO server.

Een andere oplossing is het gebruik van een ActiveX-DLL voor de RTD-server in plaats van een ActiveX EXE. ActiveX DLL-bestanden laden in de hetzelfde procesruimte als hun cliënten en elk exemplaar van Excel heeft altijd haar eigen exemplaar van de RTD-server.
Meer informatie

Stappen om het probleem te reproduceren

  1. Maak in Visual Basic een nieuw ActiveX EXE project.
  2. Op deProjectmenu, klikt u opVerwijzingen.
  3. SelecteerObject bibliotheek van Microsoft Excel 2002, en klik vervolgens opOK.
  4. Op deProjectmenu, klikt u opProject1 eigenschappen.
  5. Wijzig de Project naam in 'rtdexe' en klik vervolgens opOK.
  6. Wijziging deNaameigenschap van deClass1klassemodule "Voorbeeld".
  7. Voeg toe de de volgende code aan de klassemodule.
    Option ExplicitImplements IRtdServer  'Interface allows Excel to contact this RealTimeData server.Dim nCounter As LongPrivate Function IRtdServer_ConnectData(ByVal TopicID As Long, Strings() As Variant, _   GetNewValues As Boolean) As Variant    IRtdServer_ConnectData = nCounterEnd FunctionPrivate Sub IRtdServer_DisconnectData(ByVal TopicID As Long)    nCounter = 0End SubPrivate Function IRtdServer_Heartbeat() As Long    'Do nothing.End FunctionPrivate Function IRtdServer_RefreshData(TopicCount As Long) As Variant()    Dim aUpdates(0 To 1, 0 To 0) As Variant    nCounter = nCounter + 1    aUpdates(0, 0) = 0   'For this sample, we only refresh topic id = 0    aUpdates(1, 0) = nCounter    TopicCount = 1    IRtdServer_RefreshData = aUpdatesEnd FunctionPrivate Function IRtdServer_ServerStart(ByVal CallbackObject As Excel.IRTDUpdateEvent) As Long    nCounter = 0    Set oCallBack = CallbackObject    g_TimerID = SetTimer(0, 0, TIMER_INTERVAL, AddressOf TimerCallback)    If g_TimerID > 0 Then IRtdServer_ServerStart = 1       'Any value <1 indicates failure.End FunctionPrivate Sub IRtdServer_ServerTerminate()    KillTimer 0, g_TimerIDEnd Sub					
  8. Op deProjectin het menu selecterenModule toevoegen.
  9. Voeg de volgende code aan de nieuwe module.
    Public Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, _   ByVal uElapse As Long, ByVal lpTimerFunc As Long) As LongPublic Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As LongPublic Const TIMER_INTERVAL = 5000Public oCallBack As Excel.IRTDUpdateEventPublic g_TimerID As LongPublic Sub TimerCallback(ByVal hWnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, _   ByVal dwTime As Long)    oCallBack.UpdateNotifyEnd Sub					
  10. Op deBestandmenu, klikt u opRTDExe.exe makenhet onderdeel maken.
  11. Maak een nieuwe werkmap in Excel.
  12. Typ de volgende formule in cel A1:
    =RTD("RTDExe.example",,"X")
    De functie geeft als resultaat 0.
  13. Na vijf seconden wordt de waarde in A1 stappen om aan te geven dat is de server Excel-updates melding.
  14. Start een andere sessie van Excel en voegt u een nieuwe werkmap.
  15. Typ de volgende formule in cel A1:
    =RTD("RTDExe.example",,"X")
    De functie geeft als resultaat 0.
  16. De waarde in A1 van het tweede exemplaar van Excel blijft bij te werken. Maar niet door de waarde in A1 van het eerste exemplaar. Na de heartbeat-interval is vers treken (15 seconden is de standaard instelling), het eerste exemplaar Excel verschijnt het volgende foutbericht:
    Het real-time data server "rtdexe.example" is niet reageert. Wilt u In Microsoft Excel probeert de server opnieuw op te starten?
    Als u klikt opJa, de server opnieuw is opgestart, en ontvangt het eerste exemplaar van Excel meldingen van de server bijwerken. Echter, nadat u de server opnieuw het tweede exemplaar van Excel genereert vervolgens hetzelfde bericht na de heartbeat-interval is bereikt.
Het probleem te verhelpen zodat u deze fout ontvangt Schakel over naar het project in Visual Basic, wijzigen deInstancingeigenschap van deVoorbeeldklasseSingleUse, en vervolgens opnieuw de RTD-server.
Referenties
Voor meer informatie klikt u op het volgende artikelnummer in de Microsoft Knowledge Base:
285339Een RTG-Server maken voor Excel
rtdserver RTG real-time data server real-time rtd PRB Excel 2002 Excel 2002 XL2003 XL2007

Waarschuwing: dit artikel is automatisch vertaald

Eigenschappen

Artikel-id: 284883 - Laatst bijgewerkt: 01/12/2015 17:24:10 - Revisie: 3.0

Microsoft Office Excel 2007, Microsoft Excel 2002 Standard Edition, Microsoft Visual Basic 6.0 Professional Edition

  • kbnosurvey kbarchive kberrmsg kbpending kbprb kbmt KB284883 KbMtnl
Feedback