Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Data Control + DBCombo
kenazam




Typ: neutral
Postów: 19
Zarejestrowany: Mar 2005
Data Control + DBCombo

witam...

obie z wymienionych kontrolek chcę użyć w swoim projekcie ... problem w tym, iż chcę aby po wybraniu odpowiedniej pozycji z listy DBCombo w kotrolka Data też przeskoczyła na odpowiedni Recordset ... ??? ...
... czyli przykładnowo wybieranie 16 pozycji na liście DBCombo powoduje iż Data1.Recordset.AbsolutePosition też przechodzi na rekord 16...

... gdyby ktoś miał jakiś pomysł to chętnie go wykorzystam ...
... dodam tylko, iż SQL jest mi nieznany ...

25-05-2005 14:26
Pokaż profil kenazam  Wyślij email do kenazam        723065
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Nie znam kontrolki DBCombo ale znam SQL'a

Jeżeli chcesz wybrać jakąś pozycję z bazy danych a dokładnie z jakiejś tabeli to użyj takiego zapytania:

"SELECT * FROM tabela WHERE id=16 [LIMIT=1]"

id=16 oznacza na której pozycji ma się ustawić wskaźnik w tabeli

[LIMIT=1] - opcjonalne: jeżeli id nie jest kluczem głównym (każdy wiersz ma unikalne id) to użyj tego lub zawięź wyniki zapytania np.

"SELECT * FROM tabela WHERE id=16 AND imie="Janek" [LIMIT=1]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

25-05-2005 19:35
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
kenazam




Typ: neutral
Postów: 19
Zarejestrowany: Mar 2005

... hmm ... no próbowałem użyćzapytania SQL, ale jak dotąd mi nie wychodzi

... zanim się z tym pomączę podpowiedz mi DJK proszę czy taka składnia będzie poprawna:

"SELECT * FROM tabela WHERE ID=DBCombo1.Text AND ID=DBCombo1.Text [LIMIT=1]... ???

ID - to u mnie nazwa pola(w tabeli) bazy danych, z którego combo ciągnie właściwość DataList i które odpowiada ID w tabeli z którą jest połączona kontrolka Data...

...a co do DBCombo to jest w DBList32.ocx (Microsoft Data Bound List Controls 6.0)

25-05-2005 20:05
Pokaż profil kenazam  Wyślij email do kenazam        723065
kenazam




Typ: neutral
Postów: 19
Zarejestrowany: Mar 2005

DJK..

... ewentualnie (aby było może trochę jaśniej) - jak skonstruować zapytanie SQL aby kontrolka Data przeskoczyła do rekordu w którym ID(tabela dla Data) będzie równe ID(tabeli dla DBCombo) co automatycznie jest równe wałaściwości DBCombo.text lub DBCombo.DataField ...

dla Combo: tabela ID pole ID
dla Data: tabela FRM pole ID

25-05-2005 20:23
Pokaż profil kenazam  Wyślij email do kenazam        723065
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Przykro mi ale nigdy nie korzystałem z tych kontrolek także nie wiem jakie mają własciwości.

Jeżeli chodzi o zapytanie które podałeś to nie możesz użyć czegoś takiego co napisałeś:

"SELECT * FROM tabela WHERE ID=DBCombo1.Text AND ID=DBCombo1.Text [LIMIT=1]... ???

A dlaczego ??

Chociażby dlatego, że zawarłeś wszystko w cudzysłowiu "...." a jeśli tak zrobiłeś to DBCombo1.Text nie jest traktowane jako wartość pola obiektu. Musisz zrobić coś takiego:

"SELECT * FROM tabela WHERE ID=" & CInt(DBCombo1.Text)

1. Sprawdź co zwraca DBCombo1.Text
2. Przekonwertuj to do integera CInt(DBCombo1.text)
(pamiętaj o tym, że 1 a "1" to nie to samo a w twoim przypadku DBCombo1.text jest stringiwm a nie integerem)

Przykład użycia dla kontrolki ADODC:


Adodc1.RecordSource = "Select * From tabela"
Adodc1.Refresh
Adodc1.Recordset.Filter = "id=16" & ""


gdyby id byłu typu STRING to:

Adodc1.Recordset.Filter = "id='16'" & ""


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

25-05-2005 21:18
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Jak rozumiem DBCombo (DAO), ja mam tak:

1. Kontrolka Data1:
- Database: co tam masz
- RecordSource: select *  from produkty

2. Kontrolka  DBCombo1:
- BoundColumn : IDproduktu
- DataField: puste
- DataSource: puste
- RowSource: Data1
- ListField: IDproduktu

3. Kontrolny TextBox1:
- DataSource: Data1
- DataField: IDproduktu

oraz BookMark:

Private Sub DBCombo1_Click(Area As Integer)
Dim bmk As Variant
bmk = DBCombo1.SelectedItem
Data1.Recordset.Bookmark = bmk
End Sub

[Post edytowany dnia 25-05-2005 21:55 przez karolinavb]


_____________________________________________
Karolina

25-05-2005 21:50
Pokaż profil karolinavb  Wyślij email do karolinavb   
kenazam




Typ: neutral
Postów: 19
Zarejestrowany: Mar 2005

... karolinavb...

dokładnie to mam tak:
DBcombo1.datasource=data2
DBcombo1.ListField="ID"
DBcombo1.DataField="ID"

data1.RecordSource="FIRMY"
data2.RecordSource="ID"

...obie Tabele "Firmy" i "ID" zawierają równe sobie pola "ID" (wartością jest String)

dokładnie chodzi mi aby zdarzenie DBcombo_Change ustawiło w Data1 rekord w którym FIRMY.ID=ID.ID ...

... Twój pomysł z tym Bookmark jakoś mi nie działa...
wywala (err 3159, Not a valid Bookmark)
... pomysł mi się podoba bo być może nie będę potrzebował zapytania SQL...

... czy mogłabyś mi przybliżyć działanie Property Bookmark ???

26-05-2005 17:57
Pokaż profil kenazam  Wyślij email do kenazam        723065
kenazam




Typ: neutral
Postów: 19
Zarejestrowany: Mar 2005

... DJK ...

... z zypataniem SQL w przypadku stringa sobie poradziłem ...

What = DBCombo1.Text
"Select FIRMY.* From FIRMY Where (FIRMY.ID =" & Chr(39) & What & Chr(39) & " )"
... działa ...

... jednakże stanąłem na ponownym uruchomieniu kwerendy (czy też aby było jaśniej na Database.Execute lub Data1.Recordset.Requery)...
... oba rozwiązania potrzebują Query Name jako string i niejakiem "Options" - przeszukałem poniekąd MSDN online ale jakoś nie trafiłem co zawiera to "Options" ...
... czepiłem się tego bo w przypadku użycia kwerendy każde zdażenie DBCombo_Change wymaga u mnie ponownegu uruchomienia kwerendy czyli ponownego zapytania SQL ... i tu mam problem ???...

26-05-2005 18:05
Pokaż profil kenazam  Wyślij email do kenazam        723065
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

DBcombo_Change  - które DBCombo ?
w 1-szym poście nie było mowy o 2-ch tabelach, czy kwerendach ?????

Może po prostu opisz co chcesz zrobić, dokładnie, bo to co piszesz jest jakoś poplątane...

[Post edytowany dnia 26-05-2005 18:23 przez karolinavb]


_____________________________________________
Karolina

26-05-2005 18:22
Pokaż profil karolinavb  Wyślij email do karolinavb   
kenazam




Typ: neutral
Postów: 19
Zarejestrowany: Mar 2005

... karolinavb ...

... no może i trochę zamieszałem ... więc:
obie kontrolki Data1 i Data2 łączą się z tą samą bazą *.mdb
jednakże:
Data1 z tabelą FIRMY
Data2 z Tabelą ID

DBCombo jest połączone z Data2 (pole ID) - jest tylko jedno DBCombo,
pozostałe kontrolki formy są połączone z Data1

tabela Firmy ma pole ID
tabela ID ma także pole ID

chodzi dokładnie o to aby po zdażeniu DBCombo_Change (czyli po wybraniu wartości z listy) kontrolka Data1 ustawiłe się na rekord w którym wartość pola ID(tabeli FIRMY) był równy wartości wybranej w DBCombo ... co analogicznie pozwoli pozostałym kontrolką związanym z Data1 wyświetlić pozostałe wartości pól dla danego rekordu z tabeli FIRMY ... jest jaśniej czy namieszałem jeszcze bardziej ???

... co do kwerendy:
... mam do tego kwerendę (w bazie *.mdb), jednakże nie wiem jak ją uruchamiać przy każdym DBCombo_Change - czyli nie wiem jak z poziomu VB wysłać do kwerendy string zapytania SQL ...

... myślę że wygląda to na troche pogmatwane ale generalnie sprawa rozbija się o to iż próbuję to zrobić na dwa sposoby;
1. z użucie SQL
2. bez użycia SQL - ten sposób mnie bardziej interesuje ale kontrolka Data z tego co z nią pokombinowałem pozwala przeskoczyć na pierwszy, ostatni, poprzedni, następny rekord ... nie wiem co zrobić aby przeskoczyła na konkretny wybrany rekord.

26-05-2005 18:50
Pokaż profil kenazam  Wyślij email do kenazam        723065
kenazam




Typ: neutral
Postów: 19
Zarejestrowany: Mar 2005

... a coby tylko nie było że siedze bezczynnie i czekam na gwiazdę z nieba ...

poniżej - jedyne rozwiązanie do którego doszedłem i które wykonuje to czego oczekiwałem:

Private Sub DBCombo1_Change()
        Data1.Database.QueryDefs.Delete "RF"
        What = DBCombo1.Text
        Data1.Database.CreateQueryDef _
        "RF", "Select FIRMY.* From FIRMY Where (FIRMY.ID =" & Chr(39) & What & Chr(39) & " )"
        Data1.RecordSource = "RF"
        Data1.Refresh
End Sub

... ale oczywiście jak widać na załączonym obrazku za każdym razem kwerenda(o nazwie "RF" jest tworzona na nowo ... nie wiem jak ją poprostu odświeżać (przez ponowne wysłanie zapytania SQL)...

26-05-2005 19:38
Pokaż profil kenazam  Wyślij email do kenazam        723065
Wszystkich odpowiedzi: 10 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1