Połączenie z bazą danych
-
- Posty: 15
- Rejestracja: 26 maja 2010 18:24
- Wersja środowiska: LabVIEW 8.5
Połączenie z bazą danych
Witam,
Czy mógłby ktoś pomóc w tej sprawie ? Z bazami danych nie miałem wcześniej do czynienia, a przedwczoraj pierwszy raz zainstalowałem Microsoft SQL Server 2005, i w zasadzie nie wiem jak dalej sobie mam z tym radzić. Przeszukałem już wiele strony, natknąłem się na toolkit (LabVIEW Database Connectivity Toolkit)a także na LABSQL, ale dalej sobie nie mogę poradzić na ciągłe pytania typu "co z czym".
Znacie jakąś stronę która pokazuje od podstaw za ręke jak poprzez instalacje Express'a połączyć się w ostateczności z baza ?
Czy mógłby ktoś pomóc w tej sprawie ? Z bazami danych nie miałem wcześniej do czynienia, a przedwczoraj pierwszy raz zainstalowałem Microsoft SQL Server 2005, i w zasadzie nie wiem jak dalej sobie mam z tym radzić. Przeszukałem już wiele strony, natknąłem się na toolkit (LabVIEW Database Connectivity Toolkit)a także na LABSQL, ale dalej sobie nie mogę poradzić na ciągłe pytania typu "co z czym".
Znacie jakąś stronę która pokazuje od podstaw za ręke jak poprzez instalacje Express'a połączyć się w ostateczności z baza ?
- smiga
- Administrator
- Posty: 824
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: Połączenie z bazą danych
Najpierw musisz zapewnić sobie "połączenie" z bazą. Możesz to zrobić na dwa sposoby:
1) dla standardu ODBC używasz DSN (Data Source Names)
2) dla OLE DB używasz UDL (Universal Data Links)
Zacznijmy od 1)
Wchodzisz do Panelu sterowania\Narzędzia administracyjne\Źródła Danych ODBC.
Możesz ustawić DSN użytkownika (połączenie z bazą w obrębie komputera, na którym ustawisz DSN ewentualnie przy dostępie do serwera przy odpowiedniej konfiguracji) lub plikowe DSN (łatwiej przenieść na inny sprzęt).
Dla pierwszego prostego testu ustaw sobie plikowy DSN: dodaj/ wybierasz odpowiedni rodzaj bazy, nazwij jakoś plik DSN, dalej i zakończ, wybierz katalog (wyłącz ptaszek Użyj bieżącego katalogu) i wskaż plik z bazą - OK. Stworzony plik DSN często ląduje w katalogu Moje Dokumenty - odszukaj go i skopiuj najlepiej do katalogu z VI'em.
Możesz zacząć od testu tego co w załączniku, czyli plik z bazą oraz plik DSN (gotowe, powinno działać bez ustawiania ODBC) - daj znać co wyszło.
Jak to zadziała (a powinno) i będziesz potrzebował innych sposobów lub ich wyjaśnienia daj znać.
1) dla standardu ODBC używasz DSN (Data Source Names)
2) dla OLE DB używasz UDL (Universal Data Links)
Zacznijmy od 1)
Wchodzisz do Panelu sterowania\Narzędzia administracyjne\Źródła Danych ODBC.
Możesz ustawić DSN użytkownika (połączenie z bazą w obrębie komputera, na którym ustawisz DSN ewentualnie przy dostępie do serwera przy odpowiedniej konfiguracji) lub plikowe DSN (łatwiej przenieść na inny sprzęt).
Dla pierwszego prostego testu ustaw sobie plikowy DSN: dodaj/ wybierasz odpowiedni rodzaj bazy, nazwij jakoś plik DSN, dalej i zakończ, wybierz katalog (wyłącz ptaszek Użyj bieżącego katalogu) i wskaż plik z bazą - OK. Stworzony plik DSN często ląduje w katalogu Moje Dokumenty - odszukaj go i skopiuj najlepiej do katalogu z VI'em.
Możesz zacząć od testu tego co w załączniku, czyli plik z bazą oraz plik DSN (gotowe, powinno działać bez ustawiania ODBC) - daj znać co wyszło.
Jak to zadziała (a powinno) i będziesz potrzebował innych sposobów lub ich wyjaśnienia daj znać.
- Załączniki
-
- new.rar
- (12.69 KiB) Pobrany 407 razy
-
- Posty: 15
- Rejestracja: 26 maja 2010 18:24
- Wersja środowiska: LabVIEW 8.5
Re: Połączenie z bazą danych
Witam !
Dzięki serdeczne za pomoc. Mógłbyś zapisać tak, żebym był wstanie otworzyć to w labview 8.5 ?
Dzięki serdeczne za pomoc. Mógłbyś zapisać tak, żebym był wstanie otworzyć to w labview 8.5 ?
- smiga
- Administrator
- Posty: 824
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: Połączenie z bazą danych
Przepraszam ... już jest:
- Załączniki
-
- baza_8_5.rar
- Wersja 8.5
- (12.02 KiB) Pobrany 354 razy
-
- Posty: 15
- Rejestracja: 26 maja 2010 18:24
- Wersja środowiska: LabVIEW 8.5
Re: Połączenie z bazą danych
Dzięki bardzo.
W tym czasie, udało mi się połączyć z bazą danych odpaloną w Expressie
.
I pojawia się tu kolejne pytanie. Używam sparametryzowanego zapytania SQL, który przyjmuje jako wejście Array typu "DB tools parameter info".
Czy jestem w stanie w labview , mając normalne pola w których wpisuje stringi połączyć je w Array tego typu ?
W tym czasie, udało mi się połączyć z bazą danych odpaloną w Expressie

I pojawia się tu kolejne pytanie. Używam sparametryzowanego zapytania SQL, który przyjmuje jako wejście Array typu "DB tools parameter info".
Czy jestem w stanie w labview , mając normalne pola w których wpisuje stringi połączyć je w Array tego typu ?
- smiga
- Administrator
- Posty: 824
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: Połączenie z bazą danych
Założenie w LabView jest prosta - można wszystko
... prawie
Zerknij na poniższy kod - czy o to chodzi?
Przy drugim wywołaniu programu zobaczysz jak dodał kolejny wiersz z nazwą "aaaa"

Zerknij na poniższy kod - czy o to chodzi?
Przy drugim wywołaniu programu zobaczysz jak dodał kolejny wiersz z nazwą "aaaa"
- Załączniki
-
- number - tu możesz wstawić jakąś liczbę typu double.
- baza.png (6.2 KiB) Przejrzano 15387 razy
-
- baza Folder.rar
- Wersja 8.5
- (16.42 KiB) Pobrany 356 razy
-
- Posty: 15
- Rejestracja: 26 maja 2010 18:24
- Wersja środowiska: LabVIEW 8.5
Re: Połączenie z bazą danych
Dzięki za przykład, chociaż chyba bez samej bazy tego nie włączę nie ?
Wyciąłem całe Ciało Twojego programu i podciągnąłem pod moje. Co ciekawe, blok List zwraca 0 tabel kiedy to używając SELECT'a mam normalny do nich dostęp
Z czym to może być związane ? ( Używam do testów przykładu AdventureWorksDB dostępnego na necie od Microsoftu ). Przykładowa nazwa tableki którą tam wrzuciłem to dbo.Workers. Czy ten przedrostek może coś zmieniać ? ( W zapytaniu do bazy używam całej nazwy ,w sensie dbo.Workers więc pewnie ma to znaczenie ).
Wyciąłem całe Ciało Twojego programu i podciągnąłem pod moje. Co ciekawe, blok List zwraca 0 tabel kiedy to używając SELECT'a mam normalny do nich dostęp

- smiga
- Administrator
- Posty: 824
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: Połączenie z bazą danych
Bazę masz załączoną w .rar - COIL.DBFMegaMan123 pisze:Dzięki za przykład, chociaż chyba bez samej bazy tego nie włączę nie ?
Jakbyś załączył całość (twój VI + baza) to byłoby mi łatwiej.MegaMan123 pisze: Wyciąłem całe Ciało Twojego programu i podciągnąłem pod moje. Co ciekawe, blok List zwraca 0 tabel kiedy to używając SELECT'a mam normalny do nich dostępZ czym to może być związane ? ( Używam do testów przykładu AdventureWorksDB dostępnego na necie od Microsoftu ). Przykładowa nazwa tableki którą tam wrzuciłem to dbo.Workers. Czy ten przedrostek może coś zmieniać ? ( W zapytaniu do bazy używam całej nazwy ,w sensie dbo.Workers więc pewnie ma to znaczenie ).
-
- Posty: 15
- Rejestracja: 26 maja 2010 18:24
- Wersja środowiska: LabVIEW 8.5
Re: Połączenie z bazą danych
Za moment , ok ? 
Miałbym jeszcze pytanie z innej beczki. Użyłem bloczku select, a po nim interpretera rekordu. Zwraca on "recordset data" jako indicator.
Mógłbyś podpowiedzieć w jaki sposób teraz miałbym sprawdzać zwróconą wartość ? Otóż już tłumacze :
Dla testów w tabeli zamieściłem pole pesel dla każdej osoby. Następnie szukam takim wyrażeniem czy ewentualna osoba w bazie już istnieje :
"SELECT nameFROM dbo.Workers WHERE Pesel =xxxxxxxxx";
Wynik zwraca dobrze ( umieszczony indicator do recordset data na to wskazuje ), tylko jak mam użyć tego w celu weryfikacji ? W sensie, jeśli w danym rekordzie nie występuje taka osoba to zrób "coś tam". Do tego podpis występuje z dodatkiem "Value ->" . Mógłbyś powiedzieć jak się tego pozbyć ?
Dziękuje za pomoc, jesteście na tym forum niesamowicie serdeczni
[EDIT] Mógłbyś zaprezentować/doradzić jak używać Fetch Element data ? Myśle , że to byłoby odpowiedzią na moje powyższe pytanie , aczkolwiek nie potrafie sobie poradzić z polem index column.
[EDIT2] To też udało mi się zrobić , wystarczyło dać numeric const. Tak czy siak wartość zwraca dobrą jeśli jest w polu pesel jest zapisana dana ktora istnieje w bazie, niestety chyba moj plan na nic się nie zda , gdzyż jeśle w seksji WHERE Pesel =xxxxxxxxx" gdzie xxxxxxxxx jest jeszcze nie znana ( o to mi chodzi ) , to bloczek od zapytania generuje błąd

Miałbym jeszcze pytanie z innej beczki. Użyłem bloczku select, a po nim interpretera rekordu. Zwraca on "recordset data" jako indicator.
Mógłbyś podpowiedzieć w jaki sposób teraz miałbym sprawdzać zwróconą wartość ? Otóż już tłumacze :
Dla testów w tabeli zamieściłem pole pesel dla każdej osoby. Następnie szukam takim wyrażeniem czy ewentualna osoba w bazie już istnieje :
"SELECT nameFROM dbo.Workers WHERE Pesel =xxxxxxxxx";
Wynik zwraca dobrze ( umieszczony indicator do recordset data na to wskazuje ), tylko jak mam użyć tego w celu weryfikacji ? W sensie, jeśli w danym rekordzie nie występuje taka osoba to zrób "coś tam". Do tego podpis występuje z dodatkiem "Value ->" . Mógłbyś powiedzieć jak się tego pozbyć ?
Dziękuje za pomoc, jesteście na tym forum niesamowicie serdeczni

[EDIT] Mógłbyś zaprezentować/doradzić jak używać Fetch Element data ? Myśle , że to byłoby odpowiedzią na moje powyższe pytanie , aczkolwiek nie potrafie sobie poradzić z polem index column.
[EDIT2] To też udało mi się zrobić , wystarczyło dać numeric const. Tak czy siak wartość zwraca dobrą jeśli jest w polu pesel jest zapisana dana ktora istnieje w bazie, niestety chyba moj plan na nic się nie zda , gdzyż jeśle w seksji WHERE Pesel =xxxxxxxxx" gdzie xxxxxxxxx jest jeszcze nie znana ( o to mi chodzi ) , to bloczek od zapytania generuje błąd

- smiga
- Administrator
- Posty: 824
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: Połączenie z bazą danych
MegaMan123 pisze:Za moment , ok ?
Dziękuje za pomoc, jesteście na tym forum niesamowicie serdeczni![]()


... czasami też ktoś podłechce pomagającego ego (czuje że mi się rymuje) i kliknie pochwal ... ;)
Poniżej kolejny przykład - jest tam VI, dsn (do niego podajesz ścieżkę) i przykładowa baza - mam nadzieję, że o to chodziło:
- Załączniki
-
- baza1.rar
- (38.72 KiB) Pobrany 382 razy
-
- Posty: 15
- Rejestracja: 26 maja 2010 18:24
- Wersja środowiska: LabVIEW 8.5
Re: Połączenie z bazą danych
Panie kolego , czad ! Dokłądnie o to chodziło, zabieram się do dalszej pracy i pozwolę sobie pomęczyć jeszcze trochę w razie problemów

SUPER !
Jedno pytanie : na początku wszystko działało poprawnie, aczkolwiek teraz przy próbie połączenia wyskakuje bład " Error 1 occurred at "Conn getDataToModify.vi:1"" , do tego już pierwszy bloczek wypluwa "DB Tools Open Connec (String).vi->DB Tools Open Connec (Path).vi->baza1.vi<ERR>Exception occured in Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC dBase Driver] '(unknown)' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides. in DB Tools Open Connec (String).vi->DB Tools Open Connec (Path).vi->baza1.vi"
Kurcze, czy wiesz jak z tym poradzić ?


SUPER !
Jedno pytanie : na początku wszystko działało poprawnie, aczkolwiek teraz przy próbie połączenia wyskakuje bład " Error 1 occurred at "Conn getDataToModify.vi:1"" , do tego już pierwszy bloczek wypluwa "DB Tools Open Connec (String).vi->DB Tools Open Connec (Path).vi->baza1.vi<ERR>Exception occured in Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC dBase Driver] '(unknown)' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides. in DB Tools Open Connec (String).vi->DB Tools Open Connec (Path).vi->baza1.vi"
Kurcze, czy wiesz jak z tym poradzić ?
- smiga
- Administrator
- Posty: 824
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: Połączenie z bazą danych
Cieszę się, że mogłem pomóc i dzięki za dobre słowo
Odnośnie błędu Error 1 to podejrzewam że wynika z braku dostępu do odpowiedniego pliku .dsn podanego w "sciezka do pliku COIL.dsn"
Upewnij się czy ścieżka wskazuje na COIL.dsn , który jest w tym samym katalogu co baza COIL.DBF ... akurat tak sobie to wymyśliłem ;) .
Jeszcze lepiej będzie jak sam stworzysz sobie taki plik dsn wskazujący na swoją lub moją (do testów) bazę. Przypomnę jak to zrobić:

Odnośnie błędu Error 1 to podejrzewam że wynika z braku dostępu do odpowiedniego pliku .dsn podanego w "sciezka do pliku COIL.dsn"
Upewnij się czy ścieżka wskazuje na COIL.dsn , który jest w tym samym katalogu co baza COIL.DBF ... akurat tak sobie to wymyśliłem ;) .
Jeszcze lepiej będzie jak sam stworzysz sobie taki plik dsn wskazujący na swoją lub moją (do testów) bazę. Przypomnę jak to zrobić:
pozdrawiamsmiga pisze: Wchodzisz do Panelu sterowania\Narzędzia administracyjne\Źródła Danych ODBC.
Możesz ustawić DSN użytkownika (połączenie z bazą w obrębie komputera, na którym ustawisz DSN ewentualnie przy dostępie do serwera przy odpowiedniej konfiguracji) lub plikowe DSN (łatwiej przenieść na inny sprzęt).
Dla pierwszego prostego testu ustaw sobie plikowy DSN: dodaj/ wybierasz odpowiedni rodzaj bazy, nazwij jakoś plik DSN, dalej i zakończ, wybierz katalog (wyłącz ptaszek Użyj bieżącego katalogu) i wskaż plik z bazą - OK. Stworzony plik DSN często ląduje w katalogu Moje Dokumenty - odszukaj go i skopiuj najlepiej do katalogu z VI'em.
-
- Posty: 15
- Rejestracja: 26 maja 2010 18:24
- Wersja środowiska: LabVIEW 8.5
Re: Połączenie z bazą danych
Robiąc tak jak mówisz, mam do wyboru :
MySQL ODBC 5.1 driver,
SQL native client
SQL server.
Do tego przechodząc sekcji user DSN, klikajać dwukrotnie na dBASE file ( gdzie w nawiasie jest *dbf , czyli format ktorego Ty używasz racja ? ) , wypluwa błąd o reinstalacji drivera ODBC dla dBASE. Rozumiesz coś z tego ? Przecież jeszcze rano Twój program działał, później przestał. Confused !
MySQL ODBC 5.1 driver,
SQL native client
SQL server.
Do tego przechodząc sekcji user DSN, klikajać dwukrotnie na dBASE file ( gdzie w nawiasie jest *dbf , czyli format ktorego Ty używasz racja ? ) , wypluwa błąd o reinstalacji drivera ODBC dla dBASE. Rozumiesz coś z tego ? Przecież jeszcze rano Twój program działał, później przestał. Confused !
- smiga
- Administrator
- Posty: 824
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: Połączenie z bazą danych
Faktycznie ciekawe.
Ja jak kliknę w "Administratorze źródeł danych ODBC" plikowe DSN / dodaj to mam do dyspozycji ponad 30 rodzajów sterowników do różnych rodzajów baz.
Dla DSN użytkownika mam 8 opcji do wyboru ... i żadnych problemów.
Być może faktycznie coś się namieszało w systemie ze sterownikami ... ale z jakiego powodu ...?
Pozostaje naprawa systemu - powodzenia.
Ja jak kliknę w "Administratorze źródeł danych ODBC" plikowe DSN / dodaj to mam do dyspozycji ponad 30 rodzajów sterowników do różnych rodzajów baz.
Dla DSN użytkownika mam 8 opcji do wyboru ... i żadnych problemów.
Być może faktycznie coś się namieszało w systemie ze sterownikami ... ale z jakiego powodu ...?
Pozostaje naprawa systemu - powodzenia.
-
- Posty: 15
- Rejestracja: 26 maja 2010 18:24
- Wersja środowiska: LabVIEW 8.5
Re: Połączenie z bazą danych
Hej ! Wybacz nie miałem chwilowo możliwości korzystania z internetu 
Przeinstalowałem parę rzeczy i teraz wszystko hula jak dawniej , nie mam pojęcia co spowodowało tego crasha driverów.
Za to kieruję kolejne pytanie do Pana specjalisty
.
Otóż ściągam sobie bloczkiem "DB tools select data", wszystkie dane ( dzieje się to podobnie jak Ciebie w dwóch pętlach for ). Czy możesz poradzić jak stworzyć teraz jedynie tablice dla wybranych obiektów ? Przypuśćmy dla wszystkich , posiadających Imie "Jan" . Starałem się wymyślać jak to mogłoby wyglądać , no ale niestety nie przychodzi mi do głowy :-/

Przeinstalowałem parę rzeczy i teraz wszystko hula jak dawniej , nie mam pojęcia co spowodowało tego crasha driverów.
Za to kieruję kolejne pytanie do Pana specjalisty

Otóż ściągam sobie bloczkiem "DB tools select data", wszystkie dane ( dzieje się to podobnie jak Ciebie w dwóch pętlach for ). Czy możesz poradzić jak stworzyć teraz jedynie tablice dla wybranych obiektów ? Przypuśćmy dla wszystkich , posiadających Imie "Jan" . Starałem się wymyślać jak to mogłoby wyglądać , no ale niestety nie przychodzi mi do głowy :-/