Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 62648 Skopiuj do schowka Access - ADODB - sprawdzanie czy tablica tymczasowa istnieje
Autor Wiadomość
BrunO 
ExcelSpec



Pomógł: 125 razy
Posty: 541
Wysłany: 23-09-2018, 22:10   Access - ADODB - sprawdzanie czy tablica tymczasowa istnieje

Kontynuuję moje boje z ADODB opisane już w tym topicu
Tym razem doszedłem do problemu związanego z tworzeniem i usuwaniem tablicy tymczasowej. Podany przyklad jest oczywiście bzdurny, ale pozwala pokazać sedno problemu jakim jest konieczność sprawdzenia, czy tablicza tymczasowa przypadkiem już nie istnieje. Kod wygląda tak:
Kod:
Private Sub btnTmpTbl_Click()

Dim sql As String

sql = "SELECT * INTO tmpTbl FROM [Wypozyczenia]"

Call SQL_na_DB(sql)
Call SQL_na_DB("ALTER TABLE tmpTbl DROP COLUMN Puste, Nazwa")

'TU DZIEJE SIĘ JAKIEŚ PRZENOSZENIE DO EXCELA ITD.

Call SQL_na_DB("DROP TABLE tmpTbl")

End Sub
i teoretycznie wszystko jest ok, niestety nie można wykluczyć, że z jakiegoś powodu kod nie dojdzie do usunięcia tmpTbl i przy kolejnym uruchomieniu wyrzuci błąd, że tablica istnieje i nie można jej utworzyć. Szukałem jakiegoś sposobu na weryfikację istnienia tablicy, ale w temacie Accessa zazwyczaj trafiam na rozwiązania oparte na VBA działające bezpośrednio w Accessie a nie na SQL poprzez ADO. Stąd moja prośba:
Podpowiedzcie, jak sprawdzić czy tmpTbl istnieje, bym w razie czego mógł ją usunąć na początku działania kodu.


A przy okazji mniej palący problem, bardziej ciekawość. Czy w microsoftowym SQLu można odwołać się do kolumn (pól) po ich numerach a nie nazwach, np. w Select czy Drop? Bodajże w Oraclu nie ma z tym problemu. Chodzi mi zwłaszcza o przypadki, gdy z tabeli liczącej 40 pól chcemy pobrać pierwszych 20.
Czy jest szansa by zapisać to w stylu "SELECT 1-20 FROM ..." zamiast "SELECT ID, Region, Nazwa, Wartość ..." oczywiście zdaję sobie sprawę, że podawanie nazw pomaga uniknąć nieprzyjemności przy zmianie struktury tablicy, ale po prostu mnie to zaciekawiło.

ADODB.rar
Pobierz Plik ściągnięto 27 raz(y) 53.07 KB

ID posta: 353201 Skopiuj do schowka
 
 
kulasart
[Usunięty]

Wysłany: 24-09-2018, 00:10   

W systemach bazodanowych mamy TABELE nie tablice :)

Do opisanego problemu można podejść na dwa sposoby:
1) Wykorzystując metodę OpenSchema obiektu ADODB.Connection odpytujesz o istnienie wybranej tabeli (w ostateczności możesz pobrać listę wszystkich tabel). Po więcej informacji odsyłam do strony producenta: https://support.microsoft.com/en-ae/help/186246/how-to-use-the-ado-openschema-method-in-visual-basic

2) Pomijasz sprawdzanie czy tabela istnieje i starasz się ją usunąć zawsze przed jej utworzeniem. Oczywiści kod odpowiedzialny za usuwanie należy wtedy opakować w stosowną obsługę błędów, która ignoruje błąd pojawiający się przy próbie usunięcia nieistniejącej tabeli. Metoda dość "brutalna" ale skuteczna.


Co do drugiego pytania - mając prawie 400 postów na koncie, powinieneś znać zasady jakie panują na forum. Jeden problem = jeden temat.
W dużym skrócie: NIE
ID posta: 353203 Skopiuj do schowka
 
 
BrunO 
ExcelSpec



Pomógł: 125 razy
Posty: 541
Wysłany: 24-09-2018, 21:04   

No tak, najprostsze metody zazwyczaj najskuteczniejsze, tylko czasami człowiek tak się zakręci, że nie można na nie wpaść... Puszczony samopas błąd o niemożliwości usunięcia nieistniejącej tab...licy :) raczej nie jest w stanie szkód narobić, więc zamknąłem go w On Error Resume Next [...] On Error GoTo 0 i śmiga.

Co do drugiego pytania, ja wiem, "jeden problem jeden temat", tylko że z kolei z forum na którym "się wychowałem" została mi zasada, by nie zakładać topiców o pie :// łach, a problem ten nie zasługiwał w mojej ocenie na wyróżnienie go osobnym topiciem.

W każdym bądź razie dzięki za pomoc!
ID posta: 353253 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe