Mam plik tekstowy z kilkoma instrukcjami SQL, które chcę uruchomić w bazie danych programu Access. Pomyślałem, że to powinno być możliwe dzięki Access'owi Edytor zapytań. Więc idę do tego edytora i wklej sprawozdań:Jak wykonać wiele instrukcji SQL w programie Access 'Query Editor?
insert into aFewYears (yr) values ('2000')
insert into aFewYears (yr) values ('2001')
insert into aFewYears (yr) values ('2002')
insert into aFewYears (yr) values ('2003')
próbując je uruchomić (naciskając czerwony wykrzyknik) Otrzymuję
Missing semicolon (;) at end of SQL statement.
To może być traktowane jako wskazanie, że edytor pozwoliłby na wykonywanie wielu wyciągów . Więc zmienić oświadczenia i dołączyć taki średnik na końcu:
insert into aFewYears (yr) values ('2000');
insert into aFewYears (yr) values ('2001');
insert into aFewYears (yr) values ('2002');
insert into aFewYears (yr) values ('2003');
następnie uzyskać
Characters found after end of SQL statement.
które prawdopodobnie mogłyby być traktowane jako wskazanie, że nie jest możliwe wykonać wiele instrukcji .
Ok, więc pytanie: czy jest to możliwe do wykonania wielu instrukcji w edytorze zapytania, czy jest to możliwe, aby w jakiś sposób periodyczny wykonać instrukcje SQL w pliku w/na/przed dostępem .
Dzięki/Rene
edit Sprawozdania wkładane były wykorzystywane jako przykład i zdaję sobie sprawę, że są one mniej niż doskonały, ponieważ wszystkie one trafiają do tej samej tabeli i takie coś może oczywiście być jakoś rozwiązany przez używając jednego zdania, które ma związek lub coś takiego. W moim rzeczywistym przypadku, który próbuję rozwiązać, plik zawiera nie tylko instrukcje wstawiania, ale także tworzenie instrukcji tabel i instrukcji wstawiania z różnymi tabelami podstawowymi. Miałem więc nadzieję (i nadal mam nadzieję), że istnieje coś takiego jak mój ukochany SQL * Plus dla Oracle, który może wykonać plik z wszelkiego rodzaju instrukcjami SQL.
Dlaczego warto używać zmiennej typu Variant? Po prostu możesz pominąć użycie licznika UBound()? Kiedy po raz pierwszy to zobaczyłem, pomyślałem, że wygląda jak kod od uchodźcy, który nie był w Accessie, a potem widzę, że to od ciebie, Albercie. Nigdy nie zrobiłbym tego w ten sposób. Rozdzielam łańcuchy, więc tablica powinna być typu string, moim zdaniem. –
@ David W. Fenton - "Po co używać zmiennej typu Variant?" - czasami VBA nie daje ci dużego wyboru, a to jest jedna z nich. Zaletą używania Split i For Each jest to, że kod jest IMO bardziej czytelny ... ale to kwestia gustu. Zauważam, że częściej niż nie pomijasz słów kluczowych ByVal/ByRef, co skutkuje domniemaniem ByRef, podczas gdy bardziej bezpośrednie by ByVal byłoby bardziej odpowiednie. Ale tylko kwestia gustu, bez wielkoduszności. – onedaywhen
Tak dla każdego sposobu nie używam polecenia ubound(). Zapisuje również deklaracyjny licznik pętli for/next. Uważam, że jest to trochę mniej pisania i nie muszę używać odwołań do tablicy, takich jak vSql (I). A także w miejsce "Dalej I" mogę użyć: "Dalej" (dzięki czemu mogę zmienić użytą zmienną, ale i mniej innych miejsc w kodzie, jeśli zmienisz nazwę używanego var). "dla każdego" var musi być wariantem, jednak tablica (jak wskazuje Dave) naprawdę powinna była zostać zadeklarowana jako tablica ciągów znaków Dim vSql() jako ciąg –