Diskuzní fórum, poradna
?CAD diskuze, rady, výměna zkušeností
Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion, 3ds Max, Vault a s dalšími CAD/BIM/PDM aplikacemi.
Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
|
Odpovědět
|
archiv |
| Autor | |
Vratislav
Diskutér
Přihlášen: 26.lis.2004 Stav: Offline Bodů: 17 |
Téma: ADO Automation ErrorZasláno: 26.dub.2005 v 15:23 |
|
V AutoLispu (Map 3D 2005) cyklicky vytvarim a oteviram adodb.recordset (Microsoft.Jet.OLEDB.4.0). Po urcitem poctu iteraci (cca 180) program vzdy spadne a nahlasi: Automation Error. Nelze otevrit zadnou dalsi tabulku. Recordset delam jednoduse takto: (setq rs nil) (vlax-invoke-method Podobne cykly pouzivam casto uz radu let a nikdy jsem se s touto chybou nesetkal. Nevite nekdo co to znamena? V Mapu 5 (2002) mi to urcite nedelalo. Diky za kazdou radu. |
|
![]() |
|
Vladimír Michl
Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor
ARKANCE Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 22020 |
Zasláno: 26.dub.2005 v 15:50 |
|
nevím, jestli by nebylo efektivnější opakovaně používat stejný objekt rs, ale hlavně by bylo dobré odchytávat případné chyby ADO (a dozvědět se tak bližší příčiny chyby) - viz vl-catch-all-apply
|
|
![]() |
|
Vratislav
Diskutér
Přihlášen: 26.lis.2004 Stav: Offline Bodů: 17 |
Zasláno: 26.dub.2005 v 17:24 |
|
Pane Michle, chyby ado samozřejmě odchytávám: Viz např: (setq errobj (vl-catch-all-apply
Není mi to ale nic platné, protože v tom alertu se nedovím nic nového: prostě Automation Error: Nelze otevřít žádnou další tabulku. Otázku efektivnosti vytváření recordsetu při každém volání funkce ponechám stranou. To bych nakonec mohl mít v celé aplikaci jeden globální recordset a ten bych jen otevíral a zavíral. Problém asi souvisí s tím, jak AutoLisp 2005 object recordset vytváří a ruší. Je opravdu (setq rs nil) to samé jako ve VB set rs = nothing? Vypadá to totiž, jako by v určitý okamžik byl vyčerpán nějaký potřebný paměťový prostor, protože AutoLisp po sobě objekty recordset neruší.
|
|
![]() |
|
Vratislav
Diskutér
Přihlášen: 26.lis.2004 Stav: Offline Bodů: 17 |
Zasláno: 26.dub.2005 v 18:20 |
|
Pane Michle, je to opravdu tak. že AutoLisp vytváří stále nové a nové objekty recordset. Prozatím mi pomohlo to, že jsem cyklicky otevírané recordsety opravdu nechal globální a objekt recordset vytvářím jen jednou. (if (null rs) Program tedy už jede, ale znamená to, že se vlastně neumím objektu vytvořeného pomocí funkce vlax-create-object zbavit. Co s tím? Navíc bych se skoro vsadil, že se tak Map 2002 nechoval.
|
|
![]() |
|
Vladimír Michl
Profil člena
Odeslat soukromou zprávu
Najít příspěvky člena
Navštívit stránky člena
Přidat do seznamu známých
Moderátor
ARKANCE Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 22020 |
Zasláno: 26.dub.2005 v 18:24 |
|
(setq rs nil) zruší ukazatel na objekt, ale nikoliv objekt samotný (jeho paměť); pro rušení objektu slouží (a vždy sloužila) VLisp funkce vlax-release-object popis chyby závisí na tom co vrátí daný objekt, měl by být dostupný přes catch-all-error-message |
|
![]() |
|
Vratislav
Diskutér
Přihlášen: 26.lis.2004 Stav: Offline Bodů: 17 |
Zasláno: 26.dub.2005 v 18:25 |
|
Omlouvám se za chybu, ale fragment k kódu v předešlé odpovědi má být pochopitelně takto: (if (null rs) |
|
![]() |
|
Pro technickou podporu CAD
kontaktujte Helpdesk
Odpovědět
|
|
| Přejít na fórum | Oprávnění fóra ![]() Nemůžete vytvářet nová témata v tomto fóru Nemůžete odpovídat na témata v tomto fóru Nemůžete vymazávat vaše příspěvky v tomto fóru Nemůžete upravovat vaše příspěvky v tomto fóru Nemůžete vytvářet ankety v tomto fóru Nemůžete hlasovat v anketách v tomto fóru |
Stránka byla vygenerována za 0,469 sekund.



ADO Automation Error
Možnosti tématu


