Avatar billede Greenland Nybegynder
20. august 2009 - 00:22 Der er 8 kommentarer

query - læse hele query-resultatet i et hug

Hej,

Kan nogen sige mig hvordan jeg kan læse hele queryresultatet ind i en liste på en gang, uden at vise til de enkelte columns som returneres.

Jeg har en almindelig Tquery på min form som jeg kører således:

  With Query1 do
    Begin
      Sql.clear;
      tmp:='Select * from Lager';
      Sql.add(tmp);
      prepare;
      Open;
almindeligvis traverserer jeg så resultatet med en while sætning og aflæser kolonnerne enkeltvis fx.

      nr:=FieldByName('nr').AsString;
      navn:=FieldByName('nr').AsString;

. Men hvis jeg ønsker at aflæse hele resultatet på engang hvordan gør jeg så !

Jeg har planer om at indlæse resultatet i en WebBrowser.

mvh

Greenland
Avatar billede kroning Nybegynder
20. august 2009 - 07:54 #1
Overfør til en TClientDataSet vha. en TDataSetProvider
Avatar billede Greenland Nybegynder
20. august 2009 - 12:36 #2
Tak for info,

Jeg har lige nu rodet lidt med clientdataset og datasetprovider, men hvordan henter jeg data fra min db med dem. Jeg har et odbc-alias som jeg har knyttet en database til, og den er connected, skal jeg bruge en table eller en tquery sammen med clientdataset ?
Avatar billede kroning Nybegynder
20. august 2009 - 13:59 #3
Jeg overfører data fra mine Querys til en TClientDataSet således:

ADOBogerSQL er en TQuery. AktuelDS er en TClientDataSet. Og så har jeg en TDataSetProvider som har fået navnet DataSetProvider.

ADOBogerSQL.Close;
ADOBogerSQL.SQL.Clear;
ADOBogerSQL.SQL.Add('SELECT * FROM boger');
AktuelDS.Close;
AktuelDS.ProviderName:='DataSetProvider';
AktuelDS.Open;
AktuelDS.ProviderName:='';

ADOBogerSQL.Close;
Avatar billede kroning Nybegynder
20. august 2009 - 14:02 #4
Glemte at nævne at min TClientDataSet jo er linket til min ADOBogerSQL så den ved hvor den skal hente data fra.
Avatar billede Greenland Nybegynder
21. august 2009 - 13:13 #5
Ok, tak, har fået det til at virke, men hvordan får jeg resultatet ind i fx en string eller lignende ?

Har kørt TClientDataSet.SaveToFile() og den gir mig et resultat, men det ser lidt "binært ud" / manglende formatering
Avatar billede kroning Nybegynder
21. august 2009 - 16:17 #6
Hvis du vil gemme hele resultatet i en fil kan du gøre det manuelt post for post, eller bruge SaveToFile ved SaveToFile skal du kikke på 2. parameter som kan værer:

dfBinary    Information is encoded in binary format.
dfXML    Information is encoded in XML, with extended characters encoded using an escape sequence.
dfXMLUTF8    Information is encoded in XML, with extended characters represented using UTF8.

Prøv dfXML og dfXMLUTF8 og se hvordan det ser ud.
Avatar billede Greenland Nybegynder
24. august 2009 - 16:59 #7
Hej igen,

Har prøvet parametrene, og hvis jeg bruger dfbinary så får jeg nogle underlige tegn øverst i dokumentet, hvorefter der efterfølgende står fornuftig læsbar tekst. Det er muligvis en header eller noget lignende... ?

Hvis jeg sætter den til dfxml så kan jeg læse hele filen så det er godt nok, men da jeg ønsker at vise filen i en webbrowser så viser browseren ingen data selv om jeg ved at vælge "vis kilde" kan se at der er data ! Er der nogen forklaring på det ?


Når jeg vælger dfBinary, så kan jeg godt vise mine data i en webbrowser, men som sagt da står der nogle underlige tegn øverst (jeg kan selvfølgelig klippe de første data væk), men ville ønske der var en dfHtml switch, så var det overstået !!:-)
Avatar billede kroning Nybegynder
24. august 2009 - 17:27 #8
Der findes sikkert en komponent der kan noget smart men det er ikke en jeg kender til. Men det er jo også ganske enkelt at skrive dataene selv til en fil og så kan du få det lige som du vil.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester