Strona 1 z 2

Połączenie z bazą danych

: 28 maja 2010 16:27
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 ?

Re: Połączenie z bazą danych

: 29 maja 2010 00:48
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ć.

Re: Połączenie z bazą danych

: 30 maja 2010 14:52
autor: MegaMan123
Witam !

Dzięki serdeczne za pomoc. Mógłbyś zapisać tak, żebym był wstanie otworzyć to w labview 8.5 ?

Re: Połączenie z bazą danych

: 30 maja 2010 17:12
autor: smiga
Przepraszam ... już jest:

Re: Połączenie z bazą danych

: 30 maja 2010 18:09
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 ?

Re: Połączenie z bazą danych

: 30 maja 2010 23:36
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"

Re: Połączenie z bazą danych

: 31 maja 2010 16:40
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 ).

Re: Połączenie z bazą danych

: 31 maja 2010 17:41
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.

Re: Połączenie z bazą danych

: 31 maja 2010 18:26
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 :-(

Re: Połączenie z bazą danych

: 31 maja 2010 21:22
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:

Re: Połączenie z bazą danych

: 02 cze 2010 08:11
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ć ?

Re: Połączenie z bazą danych

: 02 cze 2010 10:42
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

Re: Połączenie z bazą danych

: 02 cze 2010 12:20
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 !

Re: Połączenie z bazą danych

: 03 cze 2010 16:46
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.

Re: Połączenie z bazą danych

: 07 cze 2010 19:26
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 :-/