Avatar billede kennethv Nybegynder
27. juli 2006 - 10:44 Der er 37 kommentarer og
1 løsning

Updatering af DBLookupCombobox.

Kan nogen hjælpe mig med at fortælle mig hvordan jeg updatere DBLookupComboBox sådan at hvis en ny record bliver tilføjet til databasen skulle den ny record vises i DBLookupComBox runtime?
Avatar billede hrc Mester
27. juli 2006 - 12:36 #1
Jeg kender ikke anden løsning end at lukke og åbne tabellen/querien igen. Refresh som findes i (vistnok) TDataSet er tit ikke implementeret i de ret mange nedarvinger af denne - og når de er, så gør de sikkert ovenstående.
Avatar billede kennethv Nybegynder
27. juli 2006 - 13:01 #2
Hvordan mener du med at lukke og åbne tabelen? Sådan her:

procedure TMalerMainForm1.ToolButton2Click(Sender: TObject);
begin
  DBRichEdit1.Enabled := false;
  DBEDit6.Enabled := false;
  DBEDit7.Enabled := false;
  ADOTable1.Post;

  ADOTable1.Close; <-- det virker ikke.
  ADOTable1.Open;

Nedenstående har jeg også prøvet uden held:
  {  DBLookupComboBox1.Invalidate;
  DBLookupComboBox1.Repaint;
  DBLookupComboBox1.Update;
  DBLookupComboBox1.Refresh;
}
end;
Avatar billede stone Forsker
27. juli 2006 - 13:54 #3
RefreshLookupList i din table1 f.eks hvis du har et field der hedder aargang

så prøv table1.aargang.RefreshLookupList;
Avatar billede stone Forsker
27. juli 2006 - 13:57 #4
hmm det gik vist lidt for stærkt

table1aargang.RefreshLookupList;

fik et "." for meget med
Avatar billede kennethv Nybegynder
27. juli 2006 - 15:50 #5
ADOTable1.RefreshLookupList findes ikke.

Jeg begynder at tro om jeg hat sat det rigtigt op. Jeg har følgene:

1 DBLookupComboBox, 7 DBEdit, 1 DBRichEdit og 1 Toolbar. På min toolbar har jeg 10 toolbuttons. 4 toolbuttons er tilknyttet dokumentdatabasen på følgene måde. I designtime er action udfyldt med, DatasetPost, DatasetInsert, DatasetEdit og DatasetDelete, fordi jeg har en actionlist, hvor standard action er valgt. ActionList -> DataSource1 -> ADOTable1. Ide'en er så at når dokumentet er fundet, via DBLookupComboBox, vises OrdreNr i en af DBEdit og Overskrift i en anden DBEdit og indholdet af domkumentet vises i DBRichEdit.

Nogle der kan hjælpe mig lidt på vej? Point kan ændres.
Avatar billede kennethv Nybegynder
27. juli 2006 - 15:52 #6
Man skulle så også kunne oprette et nyt dokument og gemme det. Derefter skulle DBLookupComboBox have det nye dokument i sin liste.
Avatar billede stone Forsker
27. juli 2006 - 18:44 #7
jo den findes du skal lige huske dit fieldname hvis det hedder dokument skriver du:

AdoTable1dokument.RefreshLookupList;
Avatar billede kennethv Nybegynder
27. juli 2006 - 20:10 #8
Hmm, min ADOTable hedder ADOTable1 og ikke andet. Faktisk så har jeg 2 ADOTable :)

ADOTAble1
ADOTAble2
Avatar billede stone Forsker
27. juli 2006 - 20:52 #9
prøv at db klikke på din adotable her kan du tilføje dine fieldname p
Avatar billede stone Forsker
27. juli 2006 - 20:55 #10
men det er ikke nødvendigt du kan kalde: AdoTable1dokument.RefreshLookupList; fra din actionlist
Avatar billede kennethv Nybegynder
27. juli 2006 - 21:53 #11
Tror du at det ville være bedre at du fik koden?
Avatar billede kennethv Nybegynder
27. juli 2006 - 22:03 #12
Ja, sku. Det ser ud til at virke. Pisse godt, Stone.
Avatar billede kennethv Nybegynder
27. juli 2006 - 22:07 #13
Njaa, måske var jeg lidt for hurtigt.
Avatar billede kennethv Nybegynder
27. juli 2006 - 23:28 #14
Når jeg skal lave en ny record og har udfyldt mine 2 DBEdit og gemmer med denne:

procedure TMalerMainForm1.SaveToolButton2Click(Sender: TObject);
begin
  DBRichEdit1.Enabled := false;
  DBEDit6.Enabled := false;
  DBEDit7.Enabled := false;
  ADOTable1.Post;
  ADOTable2Ordrenr.RefreshLookupList;
end;

Jeg raiser en exception class EDatabaseError with message 'Lookup information for field 'Ordrenr' is incomplete.
Avatar billede stone Forsker
27. juli 2006 - 23:52 #15
har du sat dit adotable1ordrenr i properties til:

lookupcache:= True
Avatar billede kennethv Nybegynder
27. juli 2006 - 23:52 #16
Nu prøvede jeg noget andet. Som du nævnte skulle jeg prøve det på min ActionList, hvilket jeg så nu har gjort. Her kommer der ingen fejl, men der sker heller ikke noget i min DBLookupComboBox.

procedure TMalerMainForm1.DataSetPost1Execute(Sender: TObject);
begin
  ADOTable1ordrenr.RefreshLookupList;
end;
Avatar billede kennethv Nybegynder
27. juli 2006 - 23:55 #17
Det her prøvet nu. Samme resultat.
Avatar billede stone Forsker
28. juli 2006 - 00:18 #18
hmm i din ado prøv at sætte din adotableordrenr i

properties

fieldkind = fkdata // hvis den ikke er det
keyfields = ordernr

så er fejlen væk
Avatar billede kennethv Nybegynder
28. juli 2006 - 09:42 #19
Jeps, fejlen opstår ikke mere, men min DBLoopupComboBox bliver ikke opdateret med den sidste record jeg har oprettet.
Avatar billede kennethv Nybegynder
28. juli 2006 - 09:56 #20
På min DBLoopupComboBox props er sat følgene:

DataField = OrdreNr
DataSource = DataSource1
Keyfield = OrdreNr
ListSource = DataSource2

Så er spørgsmålet så om det er ADOTable1OrdreNr.RefreshLookupList eller ADOTable2OrdreNr.RefreshLookupList der skal bruges? Bare sådan at jeg ikke fjoller rundt i det og giver dig forkert info.
Avatar billede kennethv Nybegynder
29. juli 2006 - 08:58 #21
Hej Stone,

Jeg håber stadig at du har lyst til at hjælpe.

Point er ikke noget problem.
Avatar billede stone Forsker
29. juli 2006 - 15:01 #22
jo da selfølgelig vil jeg hjælpe og ikke pga point "ss" var lige optaget udenbys så jeg kunne ikke lige følge dit spørgsmål op....


ADOTable2OrdreNr.RefreshLookupList
Avatar billede kennethv Nybegynder
29. juli 2006 - 22:40 #23
Ja, jeg har heller ikke været helt aktiv idag. Det er min fødselsdag idag.

Ja, det er også den jeg har brugt de gange til sidst.
Avatar billede stone Forsker
29. juli 2006 - 23:40 #24
Tilykke med dagen "SS"

har prøvet at lave et eksempel hvor jeg bruger en ado her bliver lookup opdateret lige med det samme ved post... så jeg er lidt lost med hensyn til problem.
Avatar billede kennethv Nybegynder
30. juli 2006 - 00:09 #25
Vil det være nemmere hvis du fik koden?
Avatar billede stone Forsker
30. juli 2006 - 00:35 #26
nej...dine forskellige indstillinger i prop får man jo ikke med. Jeg tror ikke det er en kodefejl - men en justering i properties som er årsagen....
Avatar billede kennethv Nybegynder
30. juli 2006 - 01:10 #27
Næ, men jeg tænkte på at sende det hele til dig.
Avatar billede stone Forsker
30. juli 2006 - 10:11 #28
ok....af hensyn til spam skriver jeg lige email adr. på den måde..

steen-larsen (a) pc.dk
Avatar billede kennethv Nybegynder
30. juli 2006 - 11:03 #29
On it's way.

Jeg har lavet et eksempel på hvordan jeg har gjort det.
Avatar billede stone Forsker
30. juli 2006 - 11:41 #30
det eksempel giver en helv... masse fejl i min delphi (vcl50.bpl)

hvilken version bruger du?
Avatar billede stone Forsker
30. juli 2006 - 12:14 #31
iøvrigt kan projectet ikke indlæses i min delphi

lige et par spørgsmål:

når du opretter en ny post er det i ado1?
henter du i din dropdown data fra ado2

Fejlen ligger i dit samspil mellem de 2 ado1 og ado2
Avatar billede kennethv Nybegynder
30. juli 2006 - 12:17 #32
Jeg bruger Delphi 2005.
Avatar billede kennethv Nybegynder
30. juli 2006 - 12:18 #33
Du skrev noget om at du havde lavet et eksempel. Det kunne du prøve at sende.
Avatar billede kennethv Nybegynder
30. juli 2006 - 12:19 #34
Og ja, jeg opretter en post med ADO1 og henter min dropdown fra ADO2.
Avatar billede kennethv Nybegynder
30. juli 2006 - 14:40 #35
Hmm, jeg tror, at det lykkedes. Når jeg poster nu, bruger jeg ADO2 som også er min dropdown. Det eneste lille minus er, at når jeg sletter en post bliver teksten på den post jeg lige har slettet stadig DBLoopupComboBox felt. Altså ikke i dropdown.
Avatar billede stone Forsker
05. august 2006 - 23:49 #36
i din adotable2 event "AfterDelete" prøv

DbLookupCombobox1.Refresh;
Avatar billede kennethv Nybegynder
23. maj 2012 - 21:18 #37
@Stone

Du må ligge et svar ellers lukker jeg denne sag.
Avatar billede stone Forsker
23. maj 2012 - 22:39 #38
svar
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