...
Code Block | ||
---|---|---|
| ||
kysely := LuoSql('testikanta'); asetasql(kysely,'select tuote,sum(summa) as myynti from tuotemyy where tuotelaji in (0,2) and pvm>''2011'' '); avaasql(kysely); while not eofsql(kysely) do begin showmessage(sqlfbs(kysely,'tuote')+' '+formatfloat('#0.00',sqlfbf(kysely,'myynti'))); sqlnext(kysely); end; suljesql(kysely); vapautasql(kysely); kysely1 := CreateSql('testikanta','select count(*) as maara from tuote where ryhma = :r'); preparesql(kysely1); for i := 1 to 10 do begin sqlSetParam(kysely1,'r',i); opensql(kysely1); showmessage('Tuoteryhmässä '+inttostr(i)+' on tuotteita '+inttostr(sqlfbi(kysely1,'maara'))); closesql(kysely1); end; unprepareSql(kysely1); vapautasql(kysely1); |
Excel liityntä
Excel yhteys perustaa AdoDb:n. Esimerkki avauksesta, tässä excel avataan vain luku tilaan. Lisäksi kerromme että headereita ei ole (HDR=NO) jolloin kentät ovat f1, f2 jne sekä excel ei yritä päätellä datatyyppejä (IMEX=1). Jälkimmäinen on tarpeen jos siellä on tyhjiä tai sekalaisia arvoja samassa sarakkeessa.
Code Block | ||
---|---|---|
| ||
var
q;
begin
q := TAdoQuery.Create(nil);
// onko uudempi xcls
if pos('.XLSX', Uppercase(lahdetiedosto) ) = length(lahdetiedosto)-4 then
q.connectionString :='Provider=Microsoft.ACE.OLEDB.12.0;Data Source='+lahdetiedosto+';'+
'Extended Properties="Excel 12.0 Xml;HDR=No;IMEX=1"'
else
q.connectionString :='Provider=Microsoft.JET.OLEDB.4.0;Data Source='+lahdetiedosto+';'+
'Extended Properties="Excel 8.0;HDR=No;IMEX=1"'
q.sql.text := 'select f1 as numero,f2 as tilauskoodi,f3 as nimi, '+
'f4 as paaryhma,f5 as tuoteryhma ,f6 as aliryhma, '+
'f7 as vero,f8 as toimittaja,f9 as hinta,f10 as keskihinta,f11 as tilauskoko,f12 as hrkerroin, f13 as hryksikko, '+
'f14 as vyks, f15 as myks, f16 as tilyks, f17 as lisatunnus, '+
'f18 as vari, f19 as koko, f20 as viivakoodi '+
'from [Tuote$]';
q.active := true;
while not q.eof do
begin
showmessage(q.fieldbyname('numero').asstring+' '+q.fieldbyname('nimi').asstring);
q.next;
end;
q.close;
q.free; |
Kun exceliä haluataan kirjoitttaa, pitää Extended properties olla 'Extended Properties="Excel 12.0 Xml;ReadOnly=False;HDR=YES" (kun siis uudempi excel) eli HDR on pakollinen ja IMEX ei saa olla. Alla muutama esimerkki update/insert lauseesta.
Code Block | ||
---|---|---|
| ||
q.sql.text := 'insert into [Tuote$] (tuotenumero, tilauskoodi, nimi) values (''kenttä1'', ''kenttä2'', ''kenttä3'')';
q.execsql;
q.sql.text := 'update [Tuote$] set NIMI = ''aa'', TILAUSKOODI=''bb'', HRKERROIN=10.32 where TUOTENUMERO=''kenttä1'' ';
q.execsql;
q.sql.text := 'update [Tuote$] set NIMI = ''aa'', TILAUSKOODI=''bb'', [OH (sis ALV)]=10.42 where TUOTENUMERO=''VARITUOTE1'' ';
q.execsql;
|
Muut
- procedure ShowMessage(s);
- näyttää MessageBoxin.
- function OnkoParam(parametri): string;
- Palauttaa parametrin arvon tai vakion NOPARAM jos parametria ei ole annettu. Esim.
lahdetiedosto := onkoparam('lahde');
if lahdetiedosto = NOPARAM then
lahdetiedosto := 'c:winskjdata.txt';
komentorivillä parametri olisi annettu skjscript /f:skriptinnimi.pas /run /lahde:c:\data\joku.txt
- Palauttaa parametrin arvon tai vakion NOPARAM jos parametria ei ole annettu. Esim.
...