/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Lave ny tabel ud fra data fra anden tabel
Fra : Kurt G


Dato : 12-10-06 11:36

Jeg skal lave en ny tabel med udplukaf data fra en anden tabel.
Hvordan skal jeg lave loop-ene?

Et par muligheder (grov skitse):
1. Åbn Tabel1
Start loop
Find ønsket forekomst i Tabel1
Åbn Tabel2
Gem data i Tabel2
Luk Tabel2
Næste
Indtil Tabel1 slut
Luk Tabel1

2. Åbn Tabel1
Åbn Tabel2
Start loop
Find ønsket forekomst i Tabel1
Gem data i Tabel2
Næste
Indtil Tabel1 slut
Luk Tabel2
Luk Tabel1

eller er der andre muligheder?

Kan man ikke lave en søgnig på 'Ønskede data' fra Tabel1 først og gemme dem
i et array eller en liste og derefter gemme data i Tabel2 på een gang?

/Kurt



 
 
Jens Gyldenkærne Cla~ (12-10-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 12-10-06 11:48

Kurt G skrev:

> Jeg skal lave en ny tabel med udplukaf data fra en anden
> tabel. Hvordan skal jeg lave loop-ene?

Du skal slet ikke lave nogen løkker.


> eller er der andre muligheder?

Ja bestemt.


> Kan man ikke lave en søgnig på 'Ønskede data' fra Tabel1 først
> og gemme dem i et array eller en liste og derefter gemme data
> i Tabel2 på een gang?

Muligvis, men det er langt mere effektivt at flytte data direkte i
databasen - så behøver du ikke at spekulere på
datakonverteringsfejl, transport af data mellem database og asp-
parser og andet "sjov".

Lav en forespørgsel der udvælger de data du har brug for. Brug så
denne forespørgsel på en af følgende måder:

Opret ny tabel ud fra gammel:

   SELECT [dinefelter] INTO [nytabel]
   FROM [dingamletabel]
   WHERE [kriterierne for postudvælgelse]

Indsæt data i eksisterende tabel fra gammel tabel:

   INSERT INTO [nytabel] (felt1, felt2, ...)
   SELECT [dinefelter]
   FROM [dingamletabel]
   WHERE [kriterierne for postudvælgelse]

I begge tilfælde skal forespørgslen køres gennem et connection-
objekt, på samme måde som en normal UPDATE, INSERT eller DELETE-
forespørgsel.

Du skal dog være opmærksom på at der i mange tilfælde er bedre
løsninger end at kopiere hvis man skal bruge dele af en tabel.
Almindelig databaseteori siger at man ikke skal gemme samme
oplysning mere end én gang. Når du kopierer dele af en tabel er der
stor sandsynlighed for at bryde denne regel.
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Kurt G (12-10-2006)
Kommentar
Fra : Kurt G


Dato : 12-10-06 21:00

"Jens Gyldenkærne Clausen"
> Indsæt data i eksisterende tabel fra gammel tabel:
>
> INSERT INTO [nytabel] (felt1, felt2, ...)
> SELECT [dinefelter]
> FROM [dingamletabel]
> WHERE [kriterierne for postudvælgelse]

Tak for hjælpen, men som før sagt, alt mislykkes (men jeg håber stadig).
Den har jeg prøvet med negativt resultat:
Sætningen var således:
INSERT INTO [Alle000] (Kasse,Nr,Omhandler)SELECT [Kasse,Nr,Omhandler]FROM
[AlleKasser]WHERE [Nr = '%000%']
Microsoft JET Database Engine error '80040e14'
Number of query values and destination fields are not the same.


For mig at se er der lige mange felter i begge tabeller, de hedder endda det
samme.

> Du skal dog være opmærksom på at der i mange tilfælde er bedre
> løsninger end at kopiere hvis man skal bruge dele af en tabel.
> Almindelig databaseteori siger at man ikke skal gemme samme
> oplysning mere end én gang. Når du kopierer dele af en tabel er der
> stor sandsynlighed for at bryde denne regel.
Ja, men denne tabel skal bruges til at indsætte 'overskrifter' hver gang der
skiftes 'Kasse' i en løbende udskrift på andre kriterier. Det kommer jeg nok
til senere, det lykkes jo ALDRIG i nogen af de første hug!
/Kurt



Jens Gyldenkærne Cla~ (12-10-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 12-10-06 21:22

Kurt G skrev:

> Sætningen var således:
> INSERT INTO [Alle000] (Kasse,Nr,Omhandler)SELECT
> [Kasse,Nr,Omhandler]FROM [AlleKasser]WHERE [Nr = '%000%']

Firkantparanteserne får Access til at opfatte "Kasse,Nr,Omhandler"
som ét felt - derfor får du fejlen herunder:

> Number of query values and destination fields are not the
> same.

Prøv i stedet med:

   INSERT INTO Alle000 (Kasse,Nr,Omhandler)
   SELECT Kasse, Nr, Omhandler
   FROM AlleKasser
   WHERE Nr = '%000%'

Hvis du vil have %-tegnene i kriteriet til at virke som jokertegn,
skal du huske at anvende LIKE:

   INSERT INTO Alle000 (Kasse,Nr,Omhandler)
   SELECT Kasse, Nr, Omhandler
   FROM AlleKasser
   WHERE Nr LIKE '%000%'


> Ja, men denne tabel skal bruges til at indsætte 'overskrifter'
> hver gang der skiftes 'Kasse' i en løbende udskrift på andre
> kriterier. Det kommer jeg nok til senere, det lykkes jo ALDRIG
> i nogen af de første hug!

Det lyder som noget der kan klares med en mor-barn-relation i
databasen. Fx som her:

tblKategorier
- kategoriID
- kategoriNavn

tblVarer
- vareID
- kategoriID
- varenavn


--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information

Kurt G (12-10-2006)
Kommentar
Fra : Kurt G


Dato : 12-10-06 22:04

"Jens Gyldenkærne Clausen"
> Hvis du vil have %-tegnene i kriteriet til at virke som jokertegn,
> skal du huske at anvende LIKE:
>
> INSERT INTO Alle000 (Kasse,Nr,Omhandler)
> SELECT Kasse, Nr, Omhandler
> FROM AlleKasser
> WHERE Nr LIKE '%000%'

Det var lige det, der skulle til. Tak.

>> Ja, men denne tabel skal bruges til at indsætte 'overskrifter'
>> hver gang der skiftes 'Kasse' i en løbende udskrift på andre
>> kriterier. Det kommer jeg nok til senere, det lykkes jo ALDRIG
>> i nogen af de første hug!
>
> Det lyder som noget der kan klares med en mor-barn-relation i
> databasen. Fx som her:
>
> tblKategorier
> - kategoriID
> - kategoriNavn
>
> tblVarer
> - vareID
> - kategoriID
> - varenavn

Det er nok rigtigt, men siger mig ikke noget!

/Kurt



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste