mojaSymfonia FORUM
https://forum.mix-soft.pl/

Zapytanie SQL obiekt zamknięty
https://forum.mix-soft.pl/viewtopic.php?f=15&t=2327
Strona 1 z 1

Autor:  kolo81 [ 2010-09-08, 18:20 ]
Tytuł:  Zapytanie SQL obiekt zamknięty

Witam ponownie.
Zatrzymałem się na dłuższy czas przy takim problemie:
Kod:
dispatch Cn = "ADODB.Connection"
dispatch Rs = "ADODB.Recordset"
string zapytanie

zapytanie = "SET IDENTITY_INSERT TR ON INSERT INTO TR "

zapytanie = zapytanie + " (id,flag,subtyp,typ,owner_base,owner_id,kod,id_kto,id_komu,dzial,ok,data,datarozl,termin,nrozl_oper,wartosc,wartosc_rozl,nrozlilosc,status) "

zapytanie = zapytanie2 + "values (\'489\',\'1024\',3,1,33,65198,0,13,28,2,1,0,0,0,0,0,0,0,4) SET IDENTITY_INSERT TR OFF"

Rs = Cn.Execute(zapytanie)
Rs.Close()


W lini Rs = Cn.Execute(zapytanie) pokazuje błąd, iż "Operacja jest niedopuszczalna, gdy obiekt jest zamknięty" ... raz udało mi się dostać do bazy pisząc bezpośrednio kod w jednej linii, moje zapytanie, które chce wykorzystać jest dłuższe od tego przedstawionego tu, dlatego musze podzielić je na parę linii. Jakieś podpowiedzi?? :-)

Autor:  wrob [ 2010-09-08, 19:02 ]
Tytuł: 

Cytuj:
W lini Rs = Cn.Execute(zapytanie) pokazuje błąd, iż "Operacja jest niedopuszczalna, gdy obiekt jest zamknięty"


Zastanawiam sie - czy to co powyzej system moze prosciej zakomunikowac?

Moze prosta analiza tego komunikatu:-)

"zamkniety" - nie otwarty
"operacja jest niedopuszczalna" - w linii jest jedna operacja - Execute - czyli Execute jest niedopuiszczalene
myslimy dalej:
"gdy obiekt jest zamkniety" - jako ze Execute odnosi sie do obiektu Cn - oznacza to ze nasz zamkniety (inaczej mowiac - nie otwarty) "obiekt" to CN

Czyli metoda dedukcji - trzeba otworzyc Cn

Jak to sie robi - metoda lingwistycznej dedukcji - otworzyc - z angielska to Open

czyli Cn.Open - a moja wiedza tajemna jescze podpowiada mi iz po Open trzeba napisac co chcemy open - czyli jakis tajemniczo zwany connection string :-)

Autor:  MMM [ 2010-09-09, 11:12 ]
Tytuł: 

Ale tam oprócz tego jest całe mnóstwo innych błędów:
1. użycie "znikąd" zapytanie2
2. wstawianie id typu VARCHAR!!!
3. wstawianie id bez sprawdzenia, czy aby nie istnieje
4. tworzenie niewykorzystywanego recordseta.
Już nie wspomnę o takich detalach, jak dodatkowe parametry .Execute

Autor:  kolo81 [ 2010-09-09, 14:23 ]
Tytuł: 

Zgadzam się z wszystkimi błędami. Kod, że tak powiem jest przykładowy bo jest cały czas modyfikowany... Teraz mam problem, że nie mogę się dostać ponieważ obiekt jest otwarty... odwrotna sytuacja... Chodzi mi o to że chcę się dostać do procedury składowej w bazie odpowiedzialnej za wystawianie dokumentu RW... Kod tej całej procedury wyciągnąłem z bazy i chciałbym ją podpiąć do mojego modyfikowanego raportu... Poprostu nie wiem jak wstawić dokument Rw(Wydania do produkcji) dla wybranego zlecenia. Gdyby były jakieś powiązania w bazie tych dokumentów ze zleceniem było by pięknie i bym sobie poradził, dlatego szukam po procedurach składowych jak podpowiedział mi w innym temacie kolega Wrob... Moze ktoś to już robił i podpowie w którą stronę iść??

Autor:  wrob [ 2010-09-09, 17:46 ]
Tytuł: 

Powiem tak - nie ryzykuj takimi metodami pisania bezposredniego do bazy.. Serwis tej bazy bedzie kosztowny :-)

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/