Autor Téma: IBExpert - pár otázok  (Přečteno 2400 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7430
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
IBExpert - pár otázok
« kdy: 22-11-2012, 14:05:56 »
DB FireBird, IBE všetko v Query builder.

Kód: [Vybrat]
  Text1 :=
  'SELECT Flats.FKEntry, Landlords.IDLandlords, Service_Flat.IsService,'+
    ' IDService_Flat'+
  ' FROM ((Services'+
    ' INNER JOIN Service_Flat ON Services.IDServices = Service_Flat.FKService)'+
    ' INNER JOIN Flats ON Service_Flat.FKFlat = Flats.IDFlats)'+
    ' INNER JOIN Landlords ON Flats.IDFlats = Landlords.FKFlat'+
  ' WHERE Flats.FKSVB = '+ IDSVBs +' and IDServices = '+ IDServices;

  IBQ(
  'SELECT DISTINCT D2.ID1, D2.Caption1, D2.ID2, D2.Caption2, D2.ID3, D2.Caption3,'+
    ' D1.IsService, D1.IDService_Flat, D2.Street, D2.Nmbr, IDFlats'+
  ' FROM ('+ Text2 +') AS D2'+
    ' LEFT JOIN ('+ Text1 +') AS D1'+
      ' ON (D2.IDLandlords = D1.IDLandlords) AND (D2.FKEntry = D1.FKEntry)'+
  ' ORDER BY D2.Caption1, D2.Caption2, D2.Caption3');

Pod D funkčný kód. Vytvorené v MS Access. IBExpert nie je spokojný (v Query builder):

- nepozná AS. To ma prekvapuje. Ale nevadí to

- Text1. "FROM ((Services" - vadia mu tieto zátvorky. Tvrdil, že neexistuje tabuľka Flats. Vyriešil som to presuntím zátvoriek do jednotlivých JOIN- ov. Tak to on generuje.

- FROM ('+ Text2 +') AS D2. Tu mám dva problémy, ktoré potrebujem vyriešiť.

1 - namiesto Text2 by som mal rád odkaz na SQL v IBE. Kvôli prehľadnosti pri ladení. Neviem ako na to.
2 - "D2.Caption1" nepozná D2. To je vážny problém. Nechce sa mi veriť, že by to tak nemalo fungovať.
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7430
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:IBExpert - pár otázok
« Odpověď #1 kdy: 23-11-2012, 08:52:07 »
Všetky problémy boli v syntaxe. Pre mňa dosť skryté.

Ale rád by som vedel ako riešiť ten vnorený "dotaz" v Query builder. Napadlo ma, žeby to mohlo byť pomocou wiev. Je to správna úvaha?
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.