Połączenie z bazą danych

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
MegaMan123
Posty: 15
Rejestracja: 26 maja 2010 18:24
Wersja środowiska: LabVIEW 8.5

Połączenie z bazą danych

Post autor: MegaMan123 »

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 ?
Awatar użytkownika
smiga
Administrator
Posty: 824
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Połączenie z bazą danych

Post autor: smiga »

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ć.
Załączniki
new.rar
(12.69 KiB) Pobrany 407 razy
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
MegaMan123
Posty: 15
Rejestracja: 26 maja 2010 18:24
Wersja środowiska: LabVIEW 8.5

Re: Połączenie z bazą danych

Post autor: MegaMan123 »

Witam !

Dzięki serdeczne za pomoc. Mógłbyś zapisać tak, żebym był wstanie otworzyć to w labview 8.5 ?
Awatar użytkownika
smiga
Administrator
Posty: 824
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Połączenie z bazą danych

Post autor: smiga »

Przepraszam ... już jest:
Załączniki
baza_8_5.rar
Wersja 8.5
(12.02 KiB) Pobrany 354 razy
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
MegaMan123
Posty: 15
Rejestracja: 26 maja 2010 18:24
Wersja środowiska: LabVIEW 8.5

Re: Połączenie z bazą danych

Post autor: MegaMan123 »

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 ?
Awatar użytkownika
smiga
Administrator
Posty: 824
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Połączenie z bazą danych

Post autor: smiga »

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"
Załączniki
number - tu możesz wstawić jakąś liczbę typu double.
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
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
MegaMan123
Posty: 15
Rejestracja: 26 maja 2010 18:24
Wersja środowiska: LabVIEW 8.5

Re: Połączenie z bazą danych

Post autor: MegaMan123 »

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 ).
Awatar użytkownika
smiga
Administrator
Posty: 824
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Połączenie z bazą danych

Post autor: smiga »

MegaMan123 pisze:Dzięki za przykład, chociaż chyba bez samej bazy tego nie włączę nie ?
Bazę masz załączoną w .rar - COIL.DBF
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ę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 ).
Jakbyś załączył całość (twój VI + baza) to byłoby mi łatwiej.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
MegaMan123
Posty: 15
Rejestracja: 26 maja 2010 18:24
Wersja środowiska: LabVIEW 8.5

Re: Połączenie z bazą danych

Post autor: MegaMan123 »

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 :-(
Awatar użytkownika
smiga
Administrator
Posty: 824
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Połączenie z bazą danych

Post autor: smiga »

MegaMan123 pisze:Za moment , ok ? :)


Dziękuje za pomoc, jesteście na tym forum niesamowicie serdeczni :)
:) Myślę, że więcej mamy przyjemności i nauki jako pomagający, od Tych którym pomagamy... ;;)
... 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
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
MegaMan123
Posty: 15
Rejestracja: 26 maja 2010 18:24
Wersja środowiska: LabVIEW 8.5

Re: Połączenie z bazą danych

Post autor: MegaMan123 »

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ć ?
Awatar użytkownika
smiga
Administrator
Posty: 824
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Połączenie z bazą danych

Post autor: smiga »

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ć:
smiga 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.
pozdrawiam
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
MegaMan123
Posty: 15
Rejestracja: 26 maja 2010 18:24
Wersja środowiska: LabVIEW 8.5

Re: Połączenie z bazą danych

Post autor: MegaMan123 »

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 !
Awatar użytkownika
smiga
Administrator
Posty: 824
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Połączenie z bazą danych

Post autor: smiga »

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.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
MegaMan123
Posty: 15
Rejestracja: 26 maja 2010 18:24
Wersja środowiska: LabVIEW 8.5

Re: Połączenie z bazą danych

Post autor: MegaMan123 »

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 :D .
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 :-/
ODPOWIEDZ