Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Länkade Listrutor

Postades av 2005-05-11 20:34:31 - Harry Rosendahl, i forum access, Tråden har 14 Kommentarer och lästs av 990 personer

Länkade Listrutor.

Försöker länka 2st listrutor på ett sätt som jag inte ens vet om är möjligt.
Använder Access2000 och VB kod.

Jag har alltså 2 st tabeller: Tabell ”Personer” och tabell ”MånadsUppgifter”
Båda tabellerna har ett fält med namn ”PersonId” ( som inte primärnyckel i någondera tabellen, båda tabellerna har andra primärnycklar).
- Tabell ”Personer” innehåller bl.a. fält: ”PersPrimNyckel”, ”EfterNamn”, ”ForNamn”, ”PersonId” mm
- Tabell ”MånadsUppgifter” Innehåller bl.a. fält: ”ManPrimNyckel”, ”Manad”, ”ManStatus”, ”ManEnhet” mm
-Tabell ”Personer” innehåller samtliga aktuella personer.
-Tabell ”MånadsUppgifter” innehåller personers månadsuppgifter om sådana finns. (Månadsuppgift består av en post per uppgift)

En person kan alltså sakna månadsuppgift för viss månad eller ha en eller flera månadsuppgifter.

Min önskan är att presentera en lista (ev. länkade listor) enligt nedanstående:

Välj Månad: (Ordnas via DTPicker)

Person Månadsuppgift Månad
Anka Kalle Månadsuppgift
Anka Joakim Månadsuppgift
Månadsuppgift
Månadsuppgift
Idefix (tom alltså ingen månadsuppgift denhär månaden)
Asterix Månadsuppgift

Kan det lösas med listruta (ev.flera länkade listrutor) eller borde jag skapa ytterligare en tredje tabell som innehåller ett sammandrag(det jag vill visa i min listruta) ur tabellerna ”Personer” och ”MånadsUppgifter”. ??
Alternativet med en tredje tabell kräver i så fall att jag även skapar tomma poster för de personer som saknar månadsuppgifter för aktuell månad för att på så sätt få med alla personer i listan. Eller ?
Skulle helst se att det gick att lösa m.h.a de två tabeller jag redan har.

Tacksam för svar! /Harry


Svara

Sv: Länkade Listrutor

Postades av 2005-05-12 19:24:51 - Harry Rosendahl

Eftersom jag inte fått något svar på min fråga, så lutar det åt att jag låter de rutiner som skapar poster i tabell ”Person” och tabell ”Månadsuppgifter” även skapa poster i en ny tabell ”MånadsTabellPersoner”.
I den nya tabellen sparar jag bl.a. ”PersonId” med vars hjälp jag vill hämta fram personens uppgifter typ namn osv.
Här kommer då min nya fråga.
- Hur kan jag hämta fram uppgifter till en listruta från fler än en tabell ???
- Man anger ju endast en radkälla för kontrollen listruta så hur hämtar man då fram uppgifter till en kolumn i listrutan ur en tabell och uppgifter till en annan kolumn från en annan tabell?? ( Jag tänker mej att jag använder tabell ”Månadsuppgifter” som radkälla och önskar få mitt program att m.h.a fält ”PersonId” hämta fram Namn etc till kolumn i samma listruta.)
Det är klart att jag kan lagra undan namnet i klartext i den nya tabellen men eftersom det inte rör sig om enbart namnet utan en hel del andra uppgifter som jag har lagrat i separata tabeller vars Id finns lagrade i Tabell ”Månadsuppgifter” så är det inte vettigt att lösa problemet på det viset.

Hoppas det finns någon som är villig att ta sig en funderare !
Mvh / Harry


Svara

Sv:Länkade Listrutor

Postades av 2005-05-13 12:01:27 - Åsa Holmgren

Det finns ingen anledning att spara uppgifterna i en ny tabell när du har dem tillgängliga i de befintliga. Vad du behöver är en fråga som sammanställer uppgifterna. Frågan använder du sedan som radkälla i din listruta.

Låt oss anta följande:
- månadsuppgiften som du vill visa fins i fältet "ManUppg" i tabellen "MånadsUppgifter"
- månaden lagras i textformat enligt "yyMM" i fältet "Manad" i tabellen "MånadsUppgifter"
- formuläret heter "TestFrm"
- aktuell månad finns i formuläret i en textbox som heter "txtManad"
- listrutan heter "lstManad"

Frågan skulle då se ut så här:

<code>
SELECT ForNamn & ' ' & EfterNamn AS PersNamn, ManUppg
FROM (SELECT PersonId, ManUppg
FROM MånadsUppgifter
WHERE Manad = [Forms]![TestFrm]![txtManad]) AS MyRes RIGHT JOIN Personer ON Personer.PersonId = MyRes.PersonId
ORDER BY PersonId;
</code>

Du behöver dessutom en kodsnutt som uppdaterar listrutan när månaden ändras. I händelsen "Efter uppdatering" för, i det här fallet, textrutan "txtManad" skriver du:

<code>
Private Sub txtManad_AfterUpdate()
Me.lstManad.Requery
End Sub
</code>


Svara

Sv: Länkade Listrutor

Postades av 2005-05-13 13:17:27 - Harry Rosendahl

Tack för ditt svar Åsa!

Hör av mej när jag fått tid att prova. (Ser ut som en elegant lösning).

mvh/Harry


Svara

Sv: Länkade Listrutor

Postades av 2005-05-14 12:09:14 - Harry Rosendahl

Toppen!
Tack igen Åsa!

Med lite trixande enligt ditt exempel skall det nog gå att få in all tabellinfo jag vill ha med!

Ha en trevlig fortsättning på helgen. Hälsar Harry


Svara

Sv: Länkade Listrutor

Postades av 2005-05-17 09:39:12 - Harry Rosendahl

Hej Igen!

Även med Åsas fina exempel verkar det vara i det närmaste omöjligt att få ihop den lista jag önskar.

Listan skall hämta info ur totalt 5 st tabeller där Tabell ”MånadsUppgifter” innehåller nycklar till de 5 tabellerna i det fall att personen har uppgifter för månaden. Ifall att personen saknar uppgifter för månaden skall enbart personens namn visas i listan.
Vid mina hittills fruktlösa försök lyckas jag få fram listan med personer och ”Månadsuppgifter” innehållande nycklarna till tabellerna men jag lyckas inte få fram de uppgifter som nycklarna pekar på.( Lyckas alltså inte koppla nycklarna så att jag istället för nycklarna får se innehållet i de fält som nycklarna pekar på).

Här kommer en närmare beskrivning

Tabell 1: Personer
PersPrimNyckel(Räknare)
PersonId(sifferkombination ex 50036)
EfterNamn
ForNamn
osv

Tabell 2: MånadsUppgifter
ManPrimNyckel(Räknare)
Manad(yyMM)
PersonId
ManStatusId
ManEnhetId
ManProjId
ManStartDatum
ManSlutDatum
osv

Tabell 3: ManStatus
ManStatusId(Räknare)
ManStatus (Ex: ”Påbörjat”, ”Under behandling”, ”Klar”, ”Klar Låst” osv)

Tabell 4: ManEnhet
ManEnhetId(Räknare)
ManEnhet(namn på platser)

Tabell 5: ManProj
ManProjId(Räknare)
ManProj(namn på projekt)

Med hjälp av dehär tabellerna vill jag ta fram nedanstående lista som jag väljer för viss månad:

Person ManStatus ManEnhet ManProj ManStartDatum ManSlutDatum

Anka Kalle Påbörjad Ankeborg Städning
Anka Joakim Klar Ankeborg Penningpolering
Påbörjad Ankeborg Penninginsamling
Avslutad Ankefarm Skattsökning 15.05.2005 17.05.2005
Idefix (tom alltså ingen månadsuppgift denhär månaden)
Obelix Under arbete Gallien BautaSlipning
osv


Mitt första alternativ för att lösa problemet var att skapa en ny tabell som innehåller en sammanställning av uppgifterna till listan, men jag förstår att en erfaren ”SQL – användare” lyckas lösa det med befintliga tabeller.

Vore tacksam om Åsa eller någon har tid att ta en funderare.
Mvh /Harry


Svara

Sv:Länkade Listrutor

Postades av 2005-05-17 19:16:56 - Harry Rosendahl

Vi förenklar problemet och glömmer Tabell 4 och tabell 5 tills vidare och försöker visa enbart
Personens namn och Manstatus.

Problemet att hämta fram raderna för varje person och en uppgift ur tabell "MånadsUppgifter" i det fall att sådana finns fungerar helt ok enligt Åsas lösning, men hur får man fram en uppgift vars nyckel finns i Tabell "Månadsuppgift" ??
Efter nya fruktlösa försök börjar jag undra om det ens är möjligt ?

Tacksam för svar / Harry


Svara

Sv: Länkade Listrutor

Postades av 2005-05-18 16:08:21 - Johan Djupmarker

Förstår nog inte riktigt problemet... Tycker att Åsas förslag borde fungera, jag skulle dock lösa det såhär (vilket borde ge samma resultat).

Sätt listrutans källa till (testa att skapa motsvarande fråga först, brukar vara enklare att felsöka):
SELECT EfterNamn, ForNamn, ManStatus FROM Personer LEFT JOIN MånadsUppgifter ON Personer.PersonId = MånadsUppgifter.PersonId WHERE Manad = 1

/Johan


Svara

Sv:Länkade Listrutor

Postades av 2005-05-18 16:58:43 - Harry Rosendahl


Problemet är att ManStatus skall hämtas från tabell "ManStatus" vars nyckel ligger i tabell "MånadsUppgifter".
Jag måste på nåt sätt JOINA även tabell "ManStatus".
mvh /Harry


Svara

Sv: Länkade Listrutor

Postades av 2005-05-18 22:25:16 - Johan Djupmarker

Jaha, jag läste bara första inlägget och där var inte det med... Testa såhär:

SELECT EfterNamn, ForNamn, ManStatus FROM (Personer LEFT JOIN MånadsUppgifter ON Personer.PersonId = MånadsUppgifter.PersonId) LEFT JOIN ManStatus ON MånadsUppgifter.ManStatusId = ManStatus.ManStatusId WHERE Manad = 1

/Johan


Svara

Sv:Länkade Listrutor

Postades av 2005-05-19 09:50:46 - Harry Rosendahl

Du är värd din vikt i guld !

Det fungerade perfekt!!

Nu börjar jag känna mig riktigt dum. Jag förstår tydligen inte tekniken bakom det hela eftersom jag nu inte lyckas få in uppgifterna från tabell 4 och tabell 5. Borde ju bara vara att haka på ytterligare LEFT JOIN t.ex:
SELECT EfterNamn, ForNamn, ManStatus, ManEnhet FROM ((Personer LEFT JOIN MånadsUppgifter ON Personer.PersonId = MånadsUppgifter.PersonId) LEFT JOIN ManStatus ON MånadsUppgifter.ManStatusId = ManStatus.ManStatusId)
LEFT JOIN ManEnhet ON MånadsUppgifter.ManEnhetID = ManEnhet.ManEnhetId

Men så enkelt är det inte (Syntaxen ser ju lite annorlunda ut eftersom jag sätter in det hela som radkälla,
DEt blir tillägg av endel " och & _ för att få det att fungera, men det är nog inte där jag gör fel).
Skulle önska att jag fick sätta in nåt Ytterligare FROM eller nåt AND.

mvh/ Harry


Svara

Sv: Länkade Listrutor

Postades av 2005-05-19 11:36:26 - Johan Djupmarker

<b>SELECT EfterNamn, ForNamn, ManStatus, ManEnhet FROM ((Personer LEFT JOIN MånadsUppgifter ON Personer.PersonId = MånadsUppgifter.PersonId) LEFT JOIN ManStatus ON MånadsUppgifter.ManStatusId = ManStatus.ManStatusId) LEFT JOIN ManEnhet ON MånadsUppgifter.ManEnhetID = ManEnhet.ManEnhetId</b>

Det där tycker jag ser rätt ut, vad får du för fel?

/Johan


Svara

Sv:Länkade Listrutor

Postades av 2005-05-19 13:22:02 - Harry Rosendahl

Stort tack Johan!
Nu fungerar det. Jag blev tvungen att först köra igenom satsen med tabellerna var för sig.
Efter att jag fått det att fungera på det viset så gick det bra att utöka satsen med en tabell åt gången enligt ditt exempel. det gäller ju också att få alla parenteser rätt.

Eftersom man inte får något felmeddelande vid syntaxfel så blir ju det hela lite knepigare.

Använde:
.Rowsource = " SELECT bla bla"
Debug.Print .RowSource

För att spåra felet.

Hela satsen som nu fungerar ser ut som följer:

.RowSource = " SELECT EfterNamn, ManadsUppgiftStatus.Status, EnhetFartyg.EnhetFartyg, Befattningar.Befattning " & _
"FROM (((Personer LEFT JOIN ManadsUppgifter ON Personer.Anstallningsnr = ManadsUppgifter.Anstallningsnr) " & _
"LEFT JOIN ManadsUppgiftStatus ON ManadsUppgifter.ManadsUppgiftStatusnr = ManadsUppgiftStatus.Statusnr)" & _
"LEFT JOIN EnhetFartyg ON ManadsUppgifter.EnhetsnrFartygsnr = EnhetFartyg.Fartygsnr)" & _
"LEFT JOIN Befattningar ON ManadsUppgifter.Befattningnr = Befattningar.Befattningnr"

Ps: skall ännu komplettera satsen med konkateneringen av namnet enligt Åsas modell.

Stort tack till er båda två.
Nu skall jag ta en paus med en liten cyckeltur! :)
mvh / Harry


Svara

Sv: Länkade Listrutor

Postades av 2005-05-19 13:28:36 - Johan Djupmarker

Om du får liknande problem i fortsättningen kan du kopiera SQL-satsen och klistra in den i en fråga, när du försöker köra den får du oftast fram en detaljerad beskrivning av felet som hjälper ordentligt vid felsökning.

/Johan


Svara

Sv:Länkade Listrutor

Postades av 2005-05-19 15:57:11 - Harry Rosendahl

Tack igen.
Det var ett bra tips.
Underlättar betydligt.

mvh/ Harry


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 770
27 960
271 761
523
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies