🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#137505
Author: WieKo
Date: Fri, 25 Aug 2017 07:50
48 lines
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
#137508
Author: minfo
Date: Fri, 25 Aug 2017 14:36
3 lines
1542 bytes
Spróbuj podać funkcji DSumText nazwę pola w cudzysłowach - "tTelefon".

MF
Wartości z jednej kolumny tabeli wielu rekordów
#137506
Author: minfo
Date: Fri, 25 Aug 2017 14:42
3 lines
1570 bytes
"tTelNumer"i tabelę podobnie: "tbTelefon"

MF
Re: Wartości z jednej kolumny tabeli wielu rekordów
#137521
Author: minfo
Date: Fri, 25 Aug 2017 15:30
16 lines
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
#137484
Author: WieKo
Date: Fri, 25 Aug 2017 19:50
28 lines
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