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


Problem med loop av två databaser

Postades av 2004-08-18 15:21:54 - Kjell Andersson, i forum visual basic - allmänt, Tråden har 17 Kommentarer och lästs av 807 personer

Jag har rört till det. Jag har med följande

Öppna databas 1
Select * data1
Lägg utsökta data i rsPerson

Do Until rsPerson.EOF

Fornamn = "" & rsPerson!ForNamn
Artal="" & rsPerson!Artal
osv

Skriv dessa data i rapport

Öppna databas 2

Select * data2 Where Year = Artal
Tilldela rsHistoria det utsökta datat
Skriv dessa data i samma rapport

Töm rsHistoria

rsPerson.MoveNext

Loop

Det skall vara TVÅ databaser så det går inte att "joina" vad jag förstår.
Mitt problem är att ibland finns det fler poster i rsPerson med samma Artal. Då vill jag att rsHistoria bara skivs EN gång eftersom den innehåller samma data för varje årtal, och dessutom EFTER alla rsPerson med det årtalet för att därefter fortsätta som vanligt.


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-18 15:47:54 - Martin Adrian

>Det skall vara TVÅ databaser så det går inte att "joina" vad jag förstår.

Kan du inte använda IN som i
SELECT *
FROM tabell1 IN "db1.mdb", tabell2 IN "db2.mdb"
WHERE ...


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-18 21:31:53 - Kjell Andersson

Hur gör man då med Connectionstring när man "executar" SQL-satsen? Man måste väl ha en kontaktsträng till varje databas eftersom det blir olika sökvägar?


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-18 22:14:53 - Johan Olsson

Måste ju fråga...

Du kan inte länka in en tabell från ena db:n till den andra (och skapa en färdig fråga) ?

Nähä...
Har för mig att Access åtminstone förut kunde köra en ad-hoc mellan två db:s.
Skriv helt enkelt sökvägen till db:n i select-satsen typ så här :

SELECT * FROM data1 JOIN data2 IN C:\VadSomHelst.mdb


Är osäker på syntaxen, kan ha konkret exempel i morrn bitti...

/Johan


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-18 22:48:06 - Kjell Andersson

Tack, det vore trevligt med ett exempel, och även då hur man "executar" i det fallet


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-19 08:47:54 - Johan Olsson

Ojdå

Kollade ditt ursprungliga problem.
Det skulle nog jag ha löst så här ungefär


Öppna databas 1
Select * data1
Lägg utsökta data i rsPerson

OldArtal ="YXA" ' vad som helst som inte kan komma från db:n

Do Until rsPerson.EOF

Fornamn = "" & rsPerson!ForNamn
Artal="" & rsPerson!Artal
osv

Skriv dessa data i rapport

If OldArtal <> Artal Then
If OldArtal <> "YXA" Then ' råddigt men funkis ?
Öppna databas 2

Select * data2 Where Year = OldArtal ' ta ut årtalet som redan loopats igenom
Tilldela rsHistoria det utsökta datat
Skriv dessa data i samma rapport

Töm rsHistoria
End If
OldArtal = Artal ' för att detta bara ska ske en gång per årtal
End If
rsPerson.MoveNext

Loop



Har annars exemplet för två db:s ligger här...

/Johan


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-19 11:02:47 - Kjell Andersson

Jag har prövat på liknande sätt men problemet är då följande.
Säg att det finns 4 personer med samma Artal.
Då skrivs första personen ut och sedan rsHistoria och därefter de tre andra personerna.
Jag får inte till det så att alla fyra personerna skrivs först och därefter rsHistoria.


Exemplet för två db:s borde inte ligga där och skräpa. Jag tycker nog att detta borde gå att få till ändå men att lära sig hur man gör med två databaser kan ju vara bra får framtiden.


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-19 12:16:48 - Johan Olsson

"Koden" borde fixa det men såg nu att det sista årtalet inte får sin historia :(



2 db :

I projektet exemplet kommer från använde jag bara en funktion för att hämta data, GetRecordset
<code>
Function GetRecordset(ByVal strSQL As String, Optional ByVal strDatabasnamn As String = "") As ADODB.Recordset
Dim rstSQL As ADODB.Recordset, strConnect As String

' Om parameter inte skickats med används ett filnamn från en global variabel...
If strDatabasnamn = "" Then
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFilnamn & ";Persist Security Info=False"
Else
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDatabasnamn & ";Persist Security Info=False"
End If

On Error GoTo GetRecordsetError

Set rstSQL = CreateObject("ADODB.Recordset")
rstSQL.CursorLocation = adUseClient
rstSQL.CursorType = adOpenStatic

rstSQL.ActiveConnection = strConnect
rstSQL.Source = strSQL
rstSQL.Open

Set rstSQL.ActiveConnection = Nothing ' koppla ifrån
Set GetRecordset = rstSQL ' och returnera

GetRecordsetExit:
Exit Function

GetRecordsetError:
Debug.Print "ERR - " & strSQL
Resume GetRecordsetExit

End Function
</code>

Inga pettimeterklagomål - den har funkat i alla fall.

Två db anropas så här
<code>
Dim rstE As ADODB.Recordset

Set rstE = GetRecordset("SELECT * FROM tabA, tabB IN 'C:\B.mdb' WHERE tabA.FK = tabB.PK", "C:\A.mdb")
</code>

Alltså är conn.string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\A.mdb;Persist Security Info=False"



/Johan


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-19 13:16:31 - Kjell Andersson

Jag får felmeddelande på satsen

Set rstE = GetRecordset("SELECT * FROM person, historia IN 'D:\Historia\data\startdata\historia.mdb' WHERE person.fodelsear = historia.år", "D:\Historia\data\person.mdb")

Tabellerna heter alltså samma som databaserna.


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-19 13:37:45 - Johan Olsson

Inte fel sökväg, ser ut som om historia.mdb och person.mdb inte ligger i samma mapp ?

Hur lyder felmedd förresten ?

Svenska tecken alltid knepigt testa [år] eller byt mot Artal som du väl kallade det tidigare

/Johan


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-19 15:28:40 - Kjell Andersson

Spelar det någon roll om de inte ligger i samma mapp? Jag har ändrat så de ligger i samma mapp. Felmeddelandet säger att input table 'person' hittas inte. Om jag byter plats på sökvägarna är det input table 'historia' som inte hittas. Jag tittar mig blind på tabellerna och ser dom ändå klart och tydligt.


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-19 15:42:09 - Johan Olsson

Jag menade bara att sökvägarna skiljde sig åt, men då skulle det vara så...

Borde ju funka då...

/Johan


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-19 16:49:31 - Martin Adrian

Du måste ange IN på båda tabellerna annars antas de vara i samma databas.

FROM person IN "C:...", historia IN "C:..."


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-19 20:48:23 - Johan Olsson

Hemma på min gata i stan så funkar det enligt exemplet...

Men det kan ju skilja mellan ado-versioner, eller ?

/Johan


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-19 22:00:14 - Kjell Andersson

Om jag sätter In på båda tabellerna får jag felmeddelande om syntaxerror in From clause


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-19 22:47:35 - Kjell Andersson

Jag har löst det!!!


Öppna databas 1
Select * data1
Lägg utsökta data i rsPerson

Do Until rsPerson.EOF

Fornamn = "" & rsPerson!ForNamn
Artal="" & rsPerson!Artal
osv

Skriv dessa data i rapport

SammaArtal = "" & rsPerson!FodelseAr
rsPerson.MoveNext
If SammaArtal = "" & rsPerson!FodelseAr Then
UpprepningArtal = True
Else
UpprepningArtal = False
End If
If UpprepningArtal = False Then
Öppna databas 2
strSQLHistoria = "select * from historia where Årtal like " & SammaArtal
Tilldela rsHistoria det utsökta datat
Skriv dessa data i samma rapport
Töm rsHistoria
End if
Loop

Det som nu fattas är historiadata från sista årtalet som jag skriver efter loopen men dett kanske också kan göras på snyggare sätt.

En fundering är varför inte rsPerson.MovePrevios verkar fungera?


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-19 23:15:35 - Johan Olsson

Troligen recordset med "ForwardOnly", snabbast så.

Natti, natti

/Johan


Svara

Sv: Problem med loop av två databaser

Postades av 2004-08-21 10:47:22 - Kjell Andersson

Är ForwardOnly default när recorset skapas?


Svara

Nyligen

  • 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
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

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 710
27 958
271 751
601
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