Michał C.

Michał C. CEE SAP
Implementation Data
Lead, Johnson &
Johnson

Temat: ADO recordset zwraca indeksy zamiast wartosci

Mam procedure, ktora wczytuje z tabeli okreslone rekordy i drukuje je w arkuszu Excela. Ponizej kawalek istotny dla mojego pytania:

With objConnection 
.Mode = adModeRead
.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & BazaOP & ";"
Set objRecordset = .Execute(SQLQuery, , adCmdText)

With objRecordset
If Not (.BOF And .EOF) Then
For m = 1 To .Fields.Count
mySheet.Cells(1, m) = .Fields(m - 1).Name
Next m
mySheet.Cells(2, 1).CopyFromRecordset objRecordset
End If
End With
End With


Tabela z ktorej zwraca dane zawiera w wiekszosci pola z innych tabel z ktorymi jest polaczona relacjami.

Np. jak mam pole cena to jest ono polaczone z polem cena z tabeli produktow.

W Accessie wszystko widac normalnie - tzn. w tabeli ktora eksportuje widze rzeczywista cene

Natomiast po wyciagnieciu tego do Excela zamiast ceny widze jedynie klucz produktu, ktorego cena powinna sie pojawic. Np. zamiast wartosci 9,99 (cena) dostaje 2345 (ID danego produktu)

W jaki sposob mozna sprawic zeby dostawac rzeczywiste wartosci zamiast odwolan do ID rekordow?

Edit: Zmiana koduMichał C. edytował(a) ten post dnia 01.09.10 o godzinie 19:27

konto usunięte

Temat: ADO recordset zwraca indeksy zamiast wartosci

w Accessie masz kontroli listbox, listview zamiast normalnych, a one pozwalają na tego typu mykacze z umieszczaniem wartości zamiast id
jak to ominąć - prosto - zrobić kwerendę w Accessie i ją odpytywać lub zmodyfikować SQLQuery na taki który pozamienia ci te elementy

dla ułatwienia dodam że potrzebujesz kwerendy z joinami poszczególnych id do wartości w tabelach słownikowych lub ekwiwalentu w SQL-u

np.

select t.*, w.nazwa
from tabela_dane as t join tabela_wartosci as w on t.idProduktu = w.id
Michał C.

Michał C. CEE SAP
Implementation Data
Lead, Johnson &
Johnson

Temat: ADO recordset zwraca indeksy zamiast wartosci

Przemek dzieki za podpowiedz - mialem przerwe w pracach nad tym projektem dlatego dopiero teraz odpisuje

To juz mam obczajone, nie wiem jeszcze tylko jak polaczyc wiecej niz dwie tabele

Przykladowo: mam tabele Asortyment polaczona z tabela Produkty oraz Klienci. Jaka kwerende powinienem napisac zeby wybrac sobie wszystkie pola z tabeli Asortyment ale zeby zamiast ID_Klienta byla Nazwa_Klienta (z tabeli Klienci) a zamiast ID_Produktu byla Nazwa_Produktu (z tabeli Produkty)?

konto usunięte

Temat: ADO recordset zwraca indeksy zamiast wartosci

Michał C.:
Przemek dzieki za podpowiedz - mialem przerwe w pracach nad tym projektem dlatego dopiero teraz odpisuje

To juz mam obczajone, nie wiem jeszcze tylko jak polaczyc wiecej niz dwie tabele

Przykladowo: mam tabele Asortyment polaczona z tabela Produkty oraz Klienci. Jaka kwerende powinienem napisac zeby wybrac sobie wszystkie pola z tabeli Asortyment ale zeby zamiast ID_Klienta byla Nazwa_Klienta (z tabeli Klienci) a zamiast ID_Produktu byla Nazwa_Produktu (z tabeli Produkty)?

select a.*, k.Nazwa_Klienta , p.Nazwa_Produktu
from Asortyment as a
join Klienci as k on a.ID_Klienta = k.id
join Produkty as p on a.ID_Produktu = p.id;

jakoś tak to powinno lecieć w widoku SQL kwerendy, jak przełączysz do widoku projektu zobaczysz co z czym łączyć

a łączenie polega na przeciągnięciu kolumny z tabeli a na odpowiednią kolumnę w tabeli b

przykładowy filmik instruktażowy
http://www.youtube.com/watch?v=bydTZEg23K4
Michał C.

Michał C. CEE SAP
Implementation Data
Lead, Johnson &
Johnson

Temat: ADO recordset zwraca indeksy zamiast wartosci

Dzieki za filmik - metoda prob i bledow doszedlem w koncu do czegos takiego:

SQLQuery = "SELECT Asortyment.*, Klienci.Nazwa_Klient, Produkty.Nazwa_Produkt " & _
"FROM Produkty " & _
"INNER JOIN (Klienci INNER JOIN Asortyment ON Klienci.ID_Klient = Asortyment.ID_Klient) " & _
"ON Produkty.ID_Produkt = Asortyment.ID_Produkt;"


Nie rozumiem co prawda wg jakiej logiki tak to powinno byc napisane ale dziala :)

Następna dyskusja:

ADO, COPYFROMRECORDSET, GET...




Wyślij zaproszenie do