Thread View: pl.comp.bazy-danych.msaccess
5 messages
5 total messages
Started by WieKo
Fri, 25 Aug 2017 07:50
Wartości z jednej kolumny tabeli wielu rekordów
Author: WieKo
Date: Fri, 25 Aug 2017 07:50
Date: Fri, 25 Aug 2017 07:50
48 lines
2795 bytes
2795 bytes
Wiem, że to już było kiedyś, ale znowu mam problem
Mam 1 tabelę tbFilie zawierającą adresy firm z polami:
tPaIDFilii | tPaNazwa |
i 2 tabelę tbTelefon zawierającą telefony firm z polami
tTelDFil | tTelNumer
Stworzyłem kwerendę, wykorzystującą funkcję DSumText autorstwa KN
SELECT tbFilie.tPaIDFilii, tbFilie.tPaNazwa, tbFilie.tPaMiejscowosc, tbTelefon.tTelNumer, DSumText([tTelNumer],[tbTelefon],"tPaIDFilii=" & [tPaIDFilii],[tPaIDFilii]) AS qTel, tbTelefon.tTelDFil
FROM tbFilie LEFT JOIN tbTelefon ON tbFilie.tPaIDFilii = tbTelefon.tTelDFil;
Chciałem, aby w polu 'qTel' pojawiły się wszystkie telefony danej firmy przedzielone przecinkiem.
Niestety, najpierw kwerenda żąda podania parametru '[tbTelefon]' a następnie wyświetla '#Błąd' w polu 'qTel'?
Co robię nie tak?
Użyta funcje to:
Public Function DSumText(sField As String, _
sTable As String, _
Optional sWhere As String, _
Optional sSep As String = ",") As Variant
Dim rec As Recordset
Dim strSQL As String
Dim kon As String
strSQL = "Select " & sField & " FROM " & sTable
If Len(sWhere) > 0 Then
strSQL = strSQL & " WHERE " & sWhere
End If
On Error GoTo err_exit
Set rec = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
With rec
Do Until .EOF
kon = kon & sSep & .Fields(0).Value
.MoveNext
Loop
.Close
End With
kon = Mid(kon, Len(sSep) + 1)
DSumText = kon
Exit Function
err_exit:
End Function
Dziękuję za wyrozumiałość
Wartości z jednej kolumny tabeli wielu rekordów
Author: minfo
Date: Fri, 25 Aug 2017 14:36
Date: Fri, 25 Aug 2017 14:36
3 lines
1542 bytes
1542 bytes
Spróbuj podać funkcji DSumText nazwę pola w cudzysłowach - "tTelefon". MF
Wartości z jednej kolumny tabeli wielu rekordów
Author: minfo
Date: Fri, 25 Aug 2017 14:42
Date: Fri, 25 Aug 2017 14:42
3 lines
1570 bytes
1570 bytes
"tTelNumer"i tabelę podobnie: "tbTelefon" MF
Re: Wartości z jednej kolumny tabeli wielu rekordów
Author: minfo
Date: Fri, 25 Aug 2017 15:30
Date: Fri, 25 Aug 2017 15:30
16 lines
1921 bytes
1921 bytes
>
> Dziękuję za wyrozumiałość
SELECT tbFilie.tPaIDFilii, tbFilie.tPaNazwa, tbFilie.tPaMiejscowosc, tbTelefon.tTelNumer,
DSumText("tTelNumer","tbTelefon","tPaIDFilii=" & [tPaIDFilii],";"]) AS qTel, tbTelefon.tTelDFil
FROM tbFilie LEFT JOIN tbTelefon ON tbFilie.tPaIDFilii = tbTelefon.tTelDFil;
Spróbuj czy mam dobre przypuszczenie odnośnie sposobu w jaki podajesz parametry sField i sTable do funkcji KN.
Pozdrawiam
MF
Re: Wartości z jednej kolumny tabeli wielu rekordów
Author: WieKo
Date: Fri, 25 Aug 2017 19:50
Date: Fri, 25 Aug 2017 19:50
28 lines
2436 bytes
2436 bytes
W dniu piątek, 25 sierpnia 2017 17:30:19 UTC+2 użytkownik mi...@onet.pl napisał:
> >
> > Dziękuję za wyrozumiałość
>
>
> SELECT tbFilie.tPaIDFilii, tbFilie.tPaNazwa, tbFilie.tPaMiejscowosc, tbTelefon.tTelNumer,
>
> DSumText("tTelNumer","tbTelefon","tPaIDFilii=" & [tPaIDFilii],";"]) AS qTel, tbTelefon.tTelDFil
>
> FROM tbFilie LEFT JOIN tbTelefon ON tbFilie.tPaIDFilii = tbTelefon.tTelDFil;
>
> Spróbuj czy mam dobre przypuszczenie odnośnie sposobu w jaki podajesz parametry sField i sTable do funkcji KN.
>
>
>
> Pozdrawiam
> MF
Dziękuję bardzo :):):)
Podpowiedź z cudzysłowiem była trafna.
Jeszcze tylko błąd w argumencie 'sWhere': zamiast "tPaIDFilii=" & [tPaIDFilii] powinno być "tTelDFil=" & [tTelDFil]
czyli
DSumText("tTelNumer","tbTelefon","tTelDFil=" & [tTelDFil]]) AS qTel
Jeszcze raz dziękuję bardzo i pozdrawiam :)
WieKo
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads