Toon posts:

[delphi] SQL vraagje

Pagina: 1
Acties:

Verwijderd

Topicstarter
In access kan je doen:

SELECT * from qryGegevens
WHERE datum => date() [met nog wat haakjes erbij, maargoed...]
SORT BY Datum, Naam

maar in delphi doet ie dit niet :?

hoe gebruik je in delphi die Date() functie (is huidige datum) in een SQL string???

Verwijderd

Ik denk dat je getDate() moet gebruiken.

(voor MSSQL Server)

Verwijderd

Topicstarter
nee, het is gewoon local SQL

via een SQL component gekoppeld aan een Datasource...

zo'n DBGrid krijgt de data van die datasource (dsGegevens), die zijn data weer haalt uit die SQL component (qryGegevens)

en nou wil ik alleen de records vanaf de huidige datum, gesorteerd op Datum en dan op Naam

(dus ORDER BY Datum, Naam;)

alleen wat is die code van de huidige datum (in Access: Date()) in delphi, die je dan in SQL kan gebruiken...

het gaat dus niet om een SQL server....

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 14:02

pistole

Frutter

om wat voor type datasource gaat het dan? Dat bepaalt namelijk het SQL 'dialect'

Ik frut, dus ik epibreer


Verwijderd

Gebruik SQL
code:
1
2
3
SELECT * from qryGegevens
WHERE datum => :HUIDIGE_DATUM()
SORT BY Datum, Naam

en dan zoiets
code:
1
2
3
4
5
6
7
  with Query1 do
  begin
    Close;
    Params[0].AsDate := Date;
    { of Params.ParamByName('HUIDIGE_DATUM').AsDate := Date }
    Open;
  end;

Verwijderd

Ik weet niet of het uitmaakt hoor, maar meestal schrijf je een groter-of-gelijk-teken als >=, en jij hebt =>. Misschien dat'ie daar over valt?

Verwijderd

Topicstarter
ja, zag ik idd staan net nadat ik het gepost had...

maar in het oospronkelijke SQL ist het >=

zal het access zooi wel ff hier neerzetten... ff zoeken...

hierzo:
code:
1
2
3
4
SELECT DISTINCTROW qryGegevens.Datum, Sum([tblgegevens].Vierkante meter gras]) AS [Som Van Vierkante meter gras]
FROM qryGegevens
GROUP BY qryGegevens.Datum
HAVING (((qryGegevens.Datum)>=Date()));

alleen delphi pakt (na veel trail and error) alleen het volgende:
code:
1
2
3
SELECT DISTINCT Datum, Sum(gegevens.M2_Gras)
FROM Gegevens
GROUP BY Gegevens.Datum

en dat geeft ook wel het goede resultaat, alleen geeft hij ook data uit het verleden :'(

  • sharky_
  • Registratie: Januari 2001
  • Laatst online: 02-04-2021

sharky_

[AbC]

Ik weet niet precies wat je nu wilt doen met die datum maar je kunt op de volgende manier een fatsoenlijke datum krijgen, maar ik betwijfel of dit is wat je wilt :D Zo niet dan beschouw als niet gepost :)
code:
1
2
3
  DateSeparator := '-';
  ShortDateFormat := 'd/m/yyyy';
  datum := datetostr(date);

[AbC]


Verwijderd

Ik zal zoiets doen, daar ik niet graag met parameters werk:
code:
1
2
3
4
5
jequerycomp.sql.text:=
  'Select * from qrygegevens where datum >= '''+
  formatdatetime('mm/dd/yyyy', now)+
  ''' sort by datum, naam';
jequerycomp.open;

En is 'qrygegevens' een echte tabel naam of de naam die je een datasource of ttable heb gegeven, want sql in delphi is echt op database niveau.

Weet ff niet zeker of je nu ' of " moet doen om een datum maar dat merk je snel genoeg :)

Verwijderd

Topicstarter
ik heb het volgende gedaan:

datamodule => dsGegevens en qryGegevens

qryGegevens: TQuery
dsGegevens : Datasource

qryGegevens.databasenaam = grasdat (BDE alias dat verwijst naar G:\gras\data)

als je nou in die TQuery zegt:

SELECT * FROM gegevens, dan gaat hij zoeken in G:\gras\data naar gegevens.db die vind ie, en daaruit haalt hij dan die junk...

het enige is dat ik hem gesorteerd op datum wil hebben, en VANAF de huidige datum.....

piece of cake (in access...)

Verwijderd

Local SQL heeft niet een functie zoals CURRENT_DATE of Date(); oplossing: parameters; vb: mijn vorige post.

Maak een parameter door in de SQL tekst :EenParameter te zetten, dus een parameter naam met daarvoor een :

Vul de parameters in voordat je de TTable/TQuery opent, dit doe je dmv TQuery.Params. TQuery.Params[0] is de eerste parameter TQuery.Params[1] de tweede etc. Je kunt ook zeggen TQuery.Params.ParamByName('EenParameter') etc.

[Edit: Effe in de help-file gekeken :)]
Pagina: 1