Vermisse Daten aus SQL-Abfrage

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
aldicek
Beiträge: 37
Registriert: Do 6. Mär 2008, 12:48
OS, Lazarus, FPC: WinXP/Mint13KDE (Lazarus 1.0.8 FPC 2.6.2)
CPU-Target: 64 Bit
Wohnort: Halle (Saale)

Vermisse Daten aus SQL-Abfrage

Beitrag von aldicek »

Hallo!

Ich habe dank eurer Hilfe ja nun schon eine ganze Menge in meinem Demoprogramm zum Klappern bekommen. Beim Versuch, meine Abfragen noch ein bisschen übersichtlicher/nutzerfreundlicher zu machen, stoße ich momentan auf folgendes Problem:
Meine Query

Code: Alles auswählen

SELECT @s:=@s+1 Spiel, date_format(sp.Datum, '%d.%m.%Y %H:%i') Datum, t1.Mannschaft Heim, t2.Mannschaft Gast, sp.Heimtore HT, sp.Gasttore GT
FROM (SELECT @s:=0) r, Spiele sp, Teams t1, Teams t2, Saisons s, Ligen l, Spieltage st 
WHERE sp.Saison = s.idSaison 
AND sp.Liga = l.idLiga 
AND sp.Spieltag = st.idSpieltag 
AND sp.Heimmannschaft = t1.idTeam 
AND sp.Gastmannschaft = t2.idTeam 
AND sp.liga = :idLiga 
AND sp.saison = :idSaison 
AND sp.spieltag = :idSpieltag 
ORDER BY sp.idSpiel;
gibt in einem DBGrid (das auf der linken Seite unter Spiele) alles korrekt wieder - bis auf Spalte 1, den Spielzähler. Die Spaltenüberschrift ist da, die Daten fehlen.
Im QueryBrowser klappt alles wunderbar, die Abfrage liefert einen Spielzähler, im Programm jedoch fehlen die Daten des Zählers (siehe Abbildung). Die Frage: Woran liegt das? (Besser: Was muss ich ändern, damit es wie gewünscht funktioniert?)
Könnte es an den Parametern liegen, die ich in die SQLQuery eingebaut habe? Oder hat Lazarus ein Problem mit SQL-Uservariablen?
Wer weiss Rat?

Gruß
Aldi
Dateianhänge
BL.JPG

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

vllt funktioniert das^^

Code: Alles auswählen

SELECT SUM(1) AS Spiel, date_format(sp.Datum, '%d.%m.%Y %H:%i') Datum, t1.Mannschaft Heim, t2.Mannschaft Gast, sp.Heimtore HT, sp.Gasttore GT
FROM Spiele sp, Teams t1, Teams t2, Saisons s, Ligen l, Spieltage st
WHERE sp.Saison = s.idSaison
AND sp.Liga = l.idLiga
AND sp.Spieltag = st.idSpieltag
AND sp.Heimmannschaft = t1.idTeam
AND sp.Gastmannschaft = t2.idTeam
AND sp.liga = :idLiga
AND sp.saison = :idSaison
AND sp.spieltag = :idSpieltag
ORDER BY sp.idSpiel;

aldicek
Beiträge: 37
Registriert: Do 6. Mär 2008, 12:48
OS, Lazarus, FPC: WinXP/Mint13KDE (Lazarus 1.0.8 FPC 2.6.2)
CPU-Target: 64 Bit
Wohnort: Halle (Saale)

Beitrag von aldicek »

Hallo Eugen,

funzt leider auch nicht, da Sum() als Aggregatfunktion eine Group By-Klausel verlangt. Schade!
Ich bin am Überlegen, ob ich die DBGrid durch StringGrid ersetze, da ich die Daten eh nicht mit einem einfachen ApplyUpdate in die Datenbank zurück bekomme. Am Problem selber wird sich aber wahrscheinlich dadurch nix ändern, oder?

Gruß
Aldi

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Vermisse Daten aus SQL-Abfrage

Beitrag von af0815 »

aldicek hat geschrieben: Könnte es an den Parametern liegen, die ich in die SQLQuery eingebaut habe? Oder hat Lazarus ein Problem mit SQL-Uservariablen?
Wer weiss Rat?
Es gab da schon Probleme damit, das durch einen Patch behoben wurde. Die Deklarierung von Variablen für die Query und die Definition für Variablen am MySQL sieht ziemlich gleich aus, dadurch wird das ganze vom falschen Ausgewertet.

Zu finden ist das ganze wenn man im Sourcecode sich die Parameterverwaltung ansieht. Nach dem Patch sollte entweder ein \@ oder ein @@ das Problem beheben. Ich bin mir nur nich sicher ob der Patch schon in der aktuellen stabilen Version vom FPC wirksam ist oder erst in der nächsten Version.

Verweis zu einem hifreichen Thread
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

aldicek
Beiträge: 37
Registriert: Do 6. Mär 2008, 12:48
OS, Lazarus, FPC: WinXP/Mint13KDE (Lazarus 1.0.8 FPC 2.6.2)
CPU-Target: 64 Bit
Wohnort: Halle (Saale)

Beitrag von aldicek »

Hallo af0815!

Vielen Dank für deinen Beitrag. Ich dachte mir ja schon etwas ähnliches, da in meinen SQL-Parametern mit einem Male 5 statt wie bisher nur 3 Parameter auftauchten. Leider scheint es jedoch der Patch noch nicht in mein Release geschafft zu haben (- habe alle Möglichkeiten des "Escapens" probiert) und selber möchte ich an der Stelle nicht wirksam werden, hab eh keine Ahnung wie man den Quellcode "rebuildet". Mach ich das Ganze halt ohne die SQL-Nummerierung der Sätze.

Gruß
Aldi

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

aldicek hat geschrieben: Leider scheint es jedoch der Patch noch nicht in mein Release geschafft zu haben
In dem Artikel har auch davon die Rede, was man ändern muß UND wie man es rekompilert. Dann solltest du keine Probleme damit haben.

Vor allen rekompileren von Lazarus selbst bringt dabei nicht, da es ein Patch für den FPC ist ! Somit ist das Problem mit dem neuersten Lazarus nicht behoben, wenn du nicht zugleich auch den neuersten FPC hast.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten