Dansk Access Forum
  Hjælp Hjælp  Søg i forum   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketDAO og VBA

 Besvar Besvar
Forfatter
LarsHT Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 10-05-2017
Status: Offline
Point: 8
Direkte link til dette indlæg Emne: DAO og VBA
    Sendt: 10-05-2017 kl. 16:44
Hey

Jeg åbner et recordset på baggrund af en forespørgsel:

dim db As DAO.Database
dim rs as DAO.recordset
set db = CurrentDb
set rs=db.OpenRecordset("SELECT * FROM MinTabel WHERE Navn = 'Zoo' ")

Hvis jeg retter i en record, med: 

rs.edit
rs.fields("DyreNavn")="Krododille"
rs.update

bliver posten i MinTabel også rettet!

Hvordan forhindrer jeg dette? 
Jeg ønsker bare et udtræk, som IKKE mere er "forbundet" med MinTabel.


Hej fra Lars

Til top



Til top
hkh Se dropdown
Sølv bruger
Sølv bruger


Medlem: 15-08-2012
Status: Offline
Point: 320
Accepteret svar Accepteret svar
Direkte link til dette indlæg Sendt: 10-05-2017 kl. 18:29
Du kan også oprette en midlertidig tabel, hvor du kopierer din data over i, foretager det du nu skal, så har du stadig dine originale data.

Næste gang starter du med at slette data i den midlertidige tabel og så oprette de data du har behov for.

Denne metode benytter jeg selv til nogle rapporter hvor jeg gerne vil have nogle data til rådighed og i tilfælde hvor jeg f.eks ønsker flere ens sider i en rapport. (Infobreve m.m. der afleveres i postkassen)

Et array kan godt blive lidt tungt at arbejde med, hvis du har mange felter, men når først koden er der, så virker det lige så godt som en midlertidig tabel, rent bortset fra at den midlertidige tabel holder data når maskinen lukkes ned.

Hans
Til top
hkh Se dropdown
Sølv bruger
Sølv bruger


Medlem: 15-08-2012
Status: Offline
Point: 320
Direkte link til dette indlæg Sendt: 10-05-2017 kl. 17:20
Hej Lars

Hvad ønsker du at opnå, ved at foretage en ændring som du ikke ønsker?

Hvis du ikke bruger rs.update bliver posten ikke gemt, men der må være en dybere mening.

Hvis du vil foretage en udvælgelse af nogle enkelte poster(søge)
Skal du benytte en WHERE sætning.
Det kan enkelt og ligetil gøres fra forespørgselsdesign, hvor du indsætter dit søgefelt og teksten du søger efter i 'Kriterier', hvis du har flere kriterier på samme linje skal de alle være opfyldt, medens kun et skal være opfyldt hvis hvert kriterie står på en ny linje.

Du skal benytte select DinTabel.* from dintabel where ((dintabel.søgefelt)='søgetekst';)
Hans
Til top
hkh Se dropdown
Sølv bruger
Sølv bruger


Medlem: 15-08-2012
Status: Offline
Point: 320
Direkte link til dette indlæg Sendt: 10-05-2017 kl. 17:32
Der er en genvej til rs.fields("DyreNavn")="Krododille"
rs!DyreNavn="Krododille"

eller


rs![DyreNavn]="Krododille"

Det sidste skal benyttes hvis der er mellemrum i feltnavnet, feltnavnet starter med et tal og helst også ved brug af danske æøå

Du skal også huske
set rs=nothing eller rs.close
set db=nothing eller db.close

Brug af Close giver en fejl hvis ikke db er åben.
Hans
Til top
LarsHT Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 10-05-2017
Status: Offline
Point: 8
Direkte link til dette indlæg Sendt: 10-05-2017 kl. 17:54
Citat: hkh hkh skrev:

Hej Lars

Hvad ønsker du at opnå, ved at foretage en ændring som du ikke ønsker?


Tak for svarene! 

Kan godt forstå, at du spørger til den dybere mening. 
Jeg har brug for at foretage et udtræk af data, som jeg skal lave noget databehandling på (ændre nogle værdier og tilføje nogle poster), som ikke skal gemmes tilbage i tabellen.

Måske er det bare lettere at gemme udtrækket i et 2D-array og så lave databehandlingen her?

Troede nok bare, at jeg kunne gemme et udtræk af data som et recordset - men arvede felttyper - og så ændre recordsettet - UDEN at det var i forbindelse med den/de oprindelige tabeller.
Har nok ikke HELT forstået, hvad et recordset så er, selvom jeg har abejdet en hel del med dem. :-)

In real life husker jeg at frigive hukommelsen, når jeg er færdig med db og rs!

Tak for tippet vedr felt-angivelser
Til top
LarsHT Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 10-05-2017
Status: Offline
Point: 8
Direkte link til dette indlæg Sendt: 10-05-2017 kl. 17:57
Hmmm - det er vist ds.GetRows jeg skal have fat I, hva?
Til top
hkh Se dropdown
Sølv bruger
Sølv bruger


Medlem: 15-08-2012
Status: Offline
Point: 320
Accepteret svar Accepteret svar
Direkte link til dette indlæg Sendt: 10-05-2017 kl. 18:29
Du kan også oprette en midlertidig tabel, hvor du kopierer din data over i, foretager det du nu skal, så har du stadig dine originale data.

Næste gang starter du med at slette data i den midlertidige tabel og så oprette de data du har behov for.

Denne metode benytter jeg selv til nogle rapporter hvor jeg gerne vil have nogle data til rådighed og i tilfælde hvor jeg f.eks ønsker flere ens sider i en rapport. (Infobreve m.m. der afleveres i postkassen)

Et array kan godt blive lidt tungt at arbejde med, hvis du har mange felter, men når først koden er der, så virker det lige så godt som en midlertidig tabel, rent bortset fra at den midlertidige tabel holder data når maskinen lukkes ned.

Hans
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2013 - 2024 Dansk Access Forum - en del af Excel-regneark.dk