...
Koska pervasiven PDAC komponenttikirjastoista ei ole saatavilla lähdekoodeja, siitä emme ole voineet tuottaa titan rajanpinnan kaltaista liittymää. Sql rajapinta on tehty omilla rutiineilla jotka ovat *
- function LuoSql(TietokantaAlias, sql, tapa) - luo kyselyn ja palauttaa sen muuttujan (jatkossa alla kysely). Voidaan myös lisätä suoraan sql parametriksi esim.
q := luosql(dbname,'select count
...
( * ) as c from from tuote');
joka tekee luonnin lisäksi sql lauseen asettamisen. Vapaaehtoinen 3. parametri tapa voidaan myös antaa. Se voi olla välillä 1-3, 1= avaa kyselyn, 2 = ajaa kysely (update, insert, delete tms), 3= ajaa kyselyn ja vapauttaa sql muutujan. Kun tapa=3, paluu arvona on vaikutettujen rivien määrä.- procedure VapautaSql(Kysely) - vapauttaa LuoSql:llä luodun kysely
- procedure Asetasq(Kysely, SqlLause) - asettaa kyselylle sqllauseen
- procedure Avaasql(kysely) - avaa sql lauseen esim. raportointia tai aineiston muuta läpikahlausta varten
- procedure AjaSql(kysely) - ajaa sql lauseen esim. update, insert tai delete.
- procedure SuljeSql(kysely) - sulkee sql kyselyn
- function eofSql(kysely) - palautaa True jos kysely on loppu
- function SqlFirst(kysely) - palaa ensimmäiseen tietueeseen
- function Sqlnext(kysely) - siirtyy seuraavaan tietueeseen
- function SqlPrev(kysely) - siirtyy edelliseen tietueeseen
- function SqlLast(kysely) - siirtyy viimeiseen tietueeseen
- function Sqlfbi(kysely,kentta) - palauttaa avatusta kyselystä kentän integerinä
- function Sqlfbb(kysely,kentta) - palauttaa avatusta kyselystä kentän Booleanin
- function Sqlfbs(kysely,kentta) - palauttaa avatusta kyselystä kentän stringinä
- function Sqlfbd(kysely,kentta) - palauttaa avatusta kyselystä kentän DateTimeä
...
64 bittisessä ympäristössä uuden excel driverin kanssa voi olla ongelmaa, jos se ei toimi, kannattaa kokeilla 2007 versio ajuria
https://www.microsoft.com/en-us/download/details.aspx?id=23734
Excel välilehtien luku
Code Block | ||
---|---|---|
| ||
var
lahdetiedosto,q;
con;
ds: TAdoDataSet;
lista;
begin
lista := tstringlist.create;
LahdeTiedosto := 'c:\temp\testi.xlsx';
ds := TAdodataSet.create(nil); // dataset taulurakenteen hakuun
// Luodaan ADODb:llä excel yhteys
con := TAdoconnection.create(nil);
con.connectionstring := 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source='+lahdetiedosto+';'+
'Extended Properties="Excel 12.0 Xml;HDR=No;IMEX=1"';
con.loginprompt := false; // ei suotta kysely käyttäjätunnusta
con.OpenSchema(20,emptyparam, emptyparam, ds);
while not ds.eof do
begin
lista.add(ds.fieldbyname('TABLE_NAME').asstring);
ds.next;
end;
// tässä kohden meillä on selvillä välilehtien nimet lista-nimisessä merkkijono listasas
logentry('välilehdet ovat:');
logentry(lista.text);
// avataan kysely ekalle välilehdelle
q := TAdoQuery.Create(nil);
Q.connection := con;
q.sql.text := 'select '+
'f1 as paaryhma, '+
'f2 as ryhma, '+
'f7 as nimi, '+
'f15 as lvv, '+
'f17 as viimostohinta, '+
'f18 as keskihinta '+
'from ['+lista.strings[0]+']';
q.active := true;
// sitten jatketaan normalisti |
Muut
- procedure ShowMessage(s);
...