Hej Hej Tjena! Hej SvenPon Hej igen Hej sven Hej som vanligt är du inkorrekt i dina svar .. Hej Sven Hej Hej PatrikRecordset fråga
Min fråga är om det här går att göra
Jag har ex 50 st textboxar som skall fyllas ifrån en access databas
med olicka rs. I varje rs så kommer sök begrepet att ändras vis varje sökning.
det jag har gort nu är att kör varje rs försig
typ:
Set rs = dbs.OpenRecordset("select a,b,c from mytabell where Tid ='" & lblkv & "' and xxx = '" & text1(0).Caption & "' and S ='" & Label1.Caption & "' and Datum ='" & txtDate & "'", dbOpenSnapshot)
Do While Not rs.EOF
T1(0) = rs!a & " " & rs!b & " " & rs!c
rs.MoveNext
Loop
If rs.RecordCount > 1 Then
MsgBox " Dubbelt " & (Label3.Caption) & " kl " & (Cmdtid(0).Caption), 16, " Dubbel: " & (txtDate.Text)
End If
rs.Close
Set rs = Nothing
o.s.v tills alla rs är visade så kan man på något smidigare sätt få det att
gå snabbare.
Mvh
TobbeSv: Recordset fråga
Här kan du snabba upp ,om det finns många poster
Dim i As Long,recCount As Long
rs.MoveLast
recCount = rs.RecordCount - 1
rs.MoveFirst
For i = 0 To recCount
T1(0) = rs!a & " " & rs!b & " " & rs!c
rs.MoveNext
Next 'i
Om du ändå vill använda EOF är det bättre att skriv
Do Until rs.EOF
...
...
Loop
Då slipper du en extra negation som skall kollas
mvh
SvenSv: Recordset fråga
Tack för snabbt svar jag skall bara försöka att förstå hur jag skall gör för att få
minna sökbegrepp för varje recordset att fungera med din kod.
men det är nog bara jag som är seg i huvet efter som jag inte förstar hur jag
skall göra efter som varje recoordset har olicka sökningar i olicka textfält.
Men jag skall testa med Do Until rs.EOF istället.
Tja!!
Tobbe :-)Sv: Recordset fråga
kan det vara så här man gör ?
Fick det att funka men kan inte märka någon skillnad i speed.
Kan kanske bero på att om ett rs är tomt så blir det fel, löste det med ”On error Resume next”
Och jag inte fick till placeringen av
Rs.MoveLast
RecCount=recordcount –1
Rs.MoveFirst
någonstans i koden för att jag kunde inte lista ut var jag skulle placera den.
Dim i AS Long,recCount AS Long
For i = 0 To recCount
Set rs = dbs.OpenRecordset("select A,B,C from tabell where Avd ='" & lblAvd & "' and Tid = '" & Cmdtid(0).Caption & "' and S ='" & Label3.Caption & "' and Datum ='" & txtDate & "'", dbOpenSnapshot)
T1(0) = rs!A & " " & rs!B & " " & rs!C
rs.MoveNext
If rs.RecordCount > 1 Then
MsgBox " Dubbel förekommer på " & (Label3.Caption) & " kl " & (Cmdtid(0).Caption), 16, " Dubbel: " & (txtDate.Text)
End If
Set rs = dbS.OpenRecordset("select A,B,C from TABELL where Avd ='" & lblAvd & "' and Tid = '" & Cmdtid(1).Caption & "' and SMan1 ='" & Label3.Caption & "' and Datum ='" & txtDate & "'", dbOpenSnapshot)
T1(1) = rs!A & " " & rs!B & " " & rs!C
rs.MoveNext
If rs.RecordCount > 1 Then
MsgBox " Dubbel förekommer på " & (Label3.Caption) & " kl " & (Cmdtid(1).Caption), 16, " Dubbel: " & (txtDate.Text)
End If
o.s.v till alla 25 sökningar är klara.
Next ’i
Rs.clost
Set rs=nothing
Dbs.clost
Set dbs=nothing
Mvh Tobbe Sv: Recordset fråga
>Fick det att funka men kan inte märka någon skillnad i speed.
Nej med så få poster så märks det inte,om du har tusentals poster
blir det märkbart.
Så här skulle jag gjort i princip.
Private Sub Någonting
Dim i As Long,recCount As Long
Dim rs As Recordset
Set rs = Dbs.OpenRecordset("SELECT A,B,C FROM Tabell " _
& "WHERE Avd = '" _
& lblAvd & "' AND Tid = '" _
& Cmdtid(0).Caption & "' AND S = '" _
& Label3.Caption & " AND Datum = '" _
& txtDate & "'", dbOpenSnapshot)
'******************************************
If rs.Eof Then Exit Sub 'recordset är tomt
rs.MoveLast
recCount= rs.RecordCount -1
rs.MoveFirst
T1(0) = rs!A & " " & rs!B & " " & rs!C
For i = 0 To recCount
If i >= 1 Then
MsgBox "Dubbel förekommer på rad " & Cstr(i) _
& vbCrLf & _
& (Label3.Caption) & " kl " _
& (Cmdtid(0).Caption), 16, " Dubbel: " _
& (txtDate.Text)
End if 'i
rs.MoveNext
Next 'i
rs.close
Set rs=nothing
Dbs.close
Set Dbs=Nothing
End Sub
Har editerat i NotePad ,reservation för små fel.
ha det
SvenSv: Recordset fråga
Jag har får det att fungera nu och det går fortare men om det kommer ett recordset som är tomt så går det inte vidare p.g.a att i
if rs.EOF then Exit sub
Det är på det här viset att ex tid 8:00 innehåller info men 9:00 är tom
sen innhåller ex 10:00 info och det skall visas i textboxarna.
Så på något sätt måste det gå att gå vidare i koden tills alla recordset
är kollade.
Eller är jag helt ute och cycklar ??????
Mvh TobbeSv: Recordset fråga
>if rs.EOF then Exit sub
Jag kom på det också när jag hade svarat.
Du får tänka till vad du vill skall hända om
RecordeSetet är tomt.
EOF betyder att din SQLfråga inte gav några träffar.
If rs.EOF Then
MsgBox "Tomt recordset"
'Formulera om frågan och gör Call till en annan
'SubRutin med Ny SQL formulering.
End If
Dina tider 0800 0900 1000 motsvar det A B C ?
Jag skall tänka till det är nog något "fel" i SQL
formuleringen med AND.
Dvs jag tror att det tillhör ovanligheterna att
det inte finns något i A eller B eller C, någon av dem
har troligen ett värde ?
ha det
SvenSv: Recordset fråga
om du vill snacka snabba upp saker är rs!a ett dåligt alternativ, skulle vilja påstå att det är ett av de absolut långsamaste ...
snabbare är
<code>
b = rs.Fields("a").value
eller
Dim fldA as ADODB.Field
Set fldA = rs.fields("a")
b = fldA.value
</code>Sv: Recordset fråga
På din fråga om A,B,C betyder 8:00,9:00,10:00 så är det nej
Tiderna är så att säga tider som sparas som ( nr,förnamn,efterman).
Efter vad det är för dag och tid som sen visar 25 st textboxar
ex
8:00 134 Kalle Svensson
9:00
10:00 276 Eva Nilsson
o.s.v
9:00 finns inte fören man har sparat 9:00,nr,förnamn,efternam i databsen
när aktuell dag visas alla förekomande bokningar i textboxarna så en del tider är tomma och det syns som tomma textboxar
i mitt program.
Därför måste koden på något sätt gå vidare till nästa rs
som det gör med min gammla kod men jag försöker att få det lite snabbare
det tar nu ca:1½ sec att i nätverket att sortera ut alla bokningar mot en Access
databas där program och databaser ligger jag pekar på databasen på servern
från clienterna som .\Data\xxx.mdb har testat med App.paht ingen skillnad
med ODBC tar det ca: 6-10 sec.Sv: Recordset fråga
>som vanligt är du inkorrekt i dina svar .. om du vill snacka snabba >upp saker är rs!a ett dåligt alternativ, skulle vilja påstå att det är ett >av de absolut långsamaste ...
Om du hade besvärat dig med att läsa hella tråden så hade
du sett att det inte är jag som tillverkat denna lösning.
Håller med om effektivitet men som sagt du hoppade på
fel klient.
Ta semester du tycks behöva det.
mvh
SvenSv: Recordset fråga
Låter intressant men hur går man tillväga om man vill skapa ex 25 st unika sökbegrepp i en tabell och sen presentera dom i ca:25 st textboxar.
Kanske finns det några exempel som man kan titta på ?
Anledningen är att jag skrev det här programmet för ett tag sen och då använd jag 25 st textboxar för att visa sökresultaten.
I mitt nya program använder jag en listview istället och då gör jag bara en sökning som presenteras i listview.
Mvh
Tobbe