Děkuji za reakce, vezmu to dozadu - MS SQL CE je opravdu to "šidítko" Compact Edition :-) . Bohužel, protože tvůrce toho programu, který s touto mou databází pracuje, ho vytvořil pravděpodobně v MS Visual Studiu, jehož je MQ SQL CE součástí, tak i já musím s touto lahůdkou pracovat..
Ve zkratce - potřebuji si napsat jednoduchý program, který na základě nějakého výběru, je nepodstatné jakého, vybere z "hlavní" databáze určité záznamy a překopíruje je do "nové" databáze, kterou zase zpětně bude používat ten původní program.
Začal jsem s tím pokusničit, a vzápětí jsem narazil na problém, když se pokouším udělat např. Select z tabulky, která obsahuje položku typu nvarchar(4000), tak dostanu zpět chybovou hlášku "Objekt je otevřen". Jestliže jen změním v tom Selectu tabulku na takovou, která nvarchar >127 neobsahuje, tak vše funguje, jak má, data se zobrazí, přenesou atd.
Jak jsem psal v minulém příspěvku, po nějakém hledání jsem našel poměrně dost zoufalých výkřiků, že se to lidem, kteří něco podobného zkoušejí děje také. Jsou to obvykle starší příspěvky, ale nikde jsem nenašel nějaké finální řešení.
Proto se zkouším zeptat tady, jestli by někoho nenapadlo, jak to obejít..
Otevírám to prostřednictvím OLEDB provideru a ADO, testuji to v Delphi7.
Na formuláři mám komponenty AdoConnection , AdoDataSet, DataSource, DataSetProvider a DBGrid. K propojení je použit MS SQL CE 3.5 OLEDB provider.
Zatím od toho programu nechci nic jiného, než aby mi zobrazil data z příslušné tabulky v DBGrid. Jak jsem psal, jakmile nepožaduji data z tabulky, v níž by se vyskytoval nvarchar >127 , tak vše proběhne , jak má a DBGrid zobrazí příslušná data.
Podle všeho je to bohužel opravdu vlastnost toho OLEDB provideru. Bohužel, jak jsem psal, nejsem v databázích zběhlý, takže nevím, jestli je nějaká možnost přistupovat k té databázi prostřednictvím něčeho jiného. Ta CE verze MS SQL je totiž opravdu dost specifická...
Bohužel ale nemám možnost to udělat nějak jinak. Původní program, který databázi vytváří a spravuje prostě neumí některé potřebné věci, takže se snažím ty funkce dotvořit "externě" ... Jsem tudíž nucen dodržet všechny formáty atd., aby po provedených externích operacích tu upravenou databázi ten původní program zase přijal... Varianta kompletního vytvoření nového "původního" programu bohužel nepřichází v úvahu, i když by to bylo nejlepší. Je dost rozsáhlý, a navíc komunikuje se speciálním zařízením naprosto nestandardním protokolem... :-(