Avatar billede koonz Nybegynder
27. februar 2000 - 19:15 Der er 3 kommentarer og
1 løsning

Sql - måske refresh problem

Jeg laver følgende select på en access database. Jeg er nødt til at sætte
RequstLive false - på grund af syntaxen. Men jeg har 2 blob felter i min
database (bmp billeder) - det ser ud til de ikke vil opdatere sig rigtigt -
så har jeg prøvet at lave en .Refresh - men så får jeg sql fejl - noget med
indexseringer - jeg sætter request true efter jeg har open'et, men det
hjælper jo ikke en flyvende fis, der er det jo for sent !

procedure TfrmMain.Sgnummer1Click(Sender: TObject);
var
str : string;
begin
str := InputBox('Vælg nummer', 'Nummer', '');
qryArtist.RequestLive := False;
qryNumbers.RequestLive := False;
qryArtist.Close;
qryArtist.SQL.Clear;
qryArtist.SQL.Add('SELECT ARTIST.ID,');
qryArtist.SQL.Add('      ARTIST.CDNUMBER,');
qryArtist.SQL.Add('      ARTIST.PREFORMER,');
qryArtist.SQL.Add('      ARTIST.TITEL,');
qryArtist.SQL.Add('      ARTIST.FROMYEAR,');
qryArtist.SQL.Add('      ARTIST.CDSERIEL,');
qryArtist.SQL.Add('      ARTIST.FRONTPICTURE,');
qryArtist.SQL.Add('      ARTIST.BACKPICTURE,');
qryArtist.SQL.Add('      SONGS.CDNUMBER,');
qryArtist.SQL.Add('      SONGS.SONGTITEL');
qryArtist.SQL.Add('FROM  ARTIST, SONGS');
qryArtist.SQL.Add('WHERE ARTIST.CDNUMBER = SONGS.CDNUMBER');
qryArtist.SQL.Add('AND SONGS.SONGTITEL LIKE :SSEEK');
qryArtist.paramByName('SSEEK').AsString := '%'+str+'%';
qryArtist.SQL.Add('ORDER  BY ARTIST.CDNUMBER');
qryArtist.Open;
qryArtist.RequestLive := True;
qryNumbers.RequestLive := True;
end;

Nogen ideer ??
Avatar billede blackthorne Nybegynder
28. februar 2000 - 08:49 #1
ja du kan ikke benytte live queries på selects der joiner på 2 tabeller. du skal enten lave 2 queries en til hver tabel eller benytte cached updates med en TUpdateSQL komponent.

det er ikke sikkert at du kan benytte refresh på en access database. et alternativ er at close, open og locate sidste record
Avatar billede koonz Nybegynder
28. februar 2000 - 11:17 #2
Det er altsammen meget godt, men min select kan retunere mere end en post, så det med Close/open, og så locate - du'r ikke, så har jeg jo ikke den rigtige select mere - eller hva ?

Jeg tænkte en mulighed var at lave en 3. query, lave selecten på den, og så putte de selected "CDNUMBER" i et array, og så selecte på Artist på de numre der står i array - men jeg er ikke sikker på jeg kan gennemskue den, mit array kan jo variere - og hvordan laver jeg en "hurtig" sammen ligning med "CDNumber" i Artist - det må jo være noget med at fylde nuller ind i resten af array'et, og så stoppe sammenligningen når værdien er nul.


hmnnn.....Det er hvis noget værre noget jeg er ude i her - nogen bedre foreslag ?

Det med cached updates har jeg aldrig prøvet, hvad er fordelen, og er det ikke ret omstændigt ?
Avatar billede blackthorne Nybegynder
28. februar 2000 - 13:07 #3
opdateringen sker med close/open. locate benytter du til at finde den post der blev opdateret. Derfor virker det også med flere poster.

Ang. Cached update. pga det ikke er altid at man lave live queries. (f.eks. når man joiner 2 tabeller), så kan man benytte cached updates + TUpdateSQL komponenten, hvor man selv kan definere den eller de sql sætninger der skal fyres af når en post oprettet/slettes eller opdateres. Dermed kan du få dit qryArtist til at være et live query, selvom du joiner 2 tabeller.

Det er ikke så kompleks at lave, det kan bare godt være lidt svært at sætte sig ind i tankegangen
Avatar billede koonz Nybegynder
28. februar 2000 - 16:27 #4
Hej Black
Jeg fik det løst ved at bruge mit array trix, det er måske ikke det helt rigtige, men det virker - hvis du har et eksempel på cached updates i D4, som ikke er alt for stort, må du meget gerne sende mig det på emailen under mit nick.

Du får points alligevel, da du fik mig til at indse problem stillingen

Tak for hjælpen
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