Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Rekordset Zle importuje pierwszy rekord

23 views
Skip to first unread message

Kali

unread,
Nov 18, 2020, 3:40:41 PM11/18/20
to
Witam
Dla swoich potrzeb firmowych tworzę sobie od lat. choć moja wiedza jest bardzo mała.

jak ktoś może mi pomóc polecam się.
Rekordset tworzy tabele i wszystko dział dobrze, lecz zawsze się żle tworzy pierwszy rekord się sypie.
Napisany kod;

Dim db As DAO.Database

Dim rcNr1 As DAO.Recordset
Dim rcNr3 As DAO.Recordset ' do tabelki pionowej z towarami
Set db = CurrentDb

Set rcNr1 = db.OpenRecordset("SELECT import.Pole1 FROM import WHERE (((import.Pole1) Is Not Null))", dbOpenDynaset)
Set rcNr3 = db.OpenRecordset("Import1")
rcNr1.MoveFirst

Do While Not rcNr1.EOF
With rcNr3
If rcNr1.Fields(0) = 1203855 Then
rcNr1.Move (-1)
idzamowienia = rcNr1.Fields(0)
rcNr1.Move (2)
a = Mid(idzamowienia, 1, InStr(idzamowienia, Chr(45)) - 1)
b = Left(Mid(idzamowienia, InStr(idzamowienia, Chr(45)) + 1), 9)

c = Replace(Mid(idzamowienia, InStr(idzamowienia, b)), b & Chr(45), "")
Else
If InStr(rcNr1.Fields(0), b & Chr(45) & c) > 0 Then
.AddNew
![idzamowienia] = idzamowienia
![a] = a
![d] = rcNr1.Fields(0)
rcNr1.Move (1)
![e] = rcNr1.Fields(0)
rcNr1.Move (1)
![f] = rcNr1.Fields(0)
.Update
Else
End If
rcNr1.MoveNext
End If
End With
Loop
rcNr1.Close
rcNr3.Close
Set rcNr1 = Nothing
Set rcNr3 = Nothing
End Sub

podejrzewam,że tajemnica jest w:
Do While Not rcNr1.EOF a może w czymś innym?
Sławek

Zbigniew Bratko

unread,
Nov 20, 2020, 5:21:15 PM11/20/20
to
W dniu 18.11.2020 o 21:40, Kali pisze:
Do While Not rcNr1.EOF na pewno nie powoduje błędu zapisu 1-szego
rekordu. pozwala Ci przesuwać się po rekordsecie aż do końca zestawu.


' a nie jest przypadkiem tak, że dla pola pierwszego wiersza rekordsetu,

rcNr1.MoveFirst, które nie jest równe 1203855
'If rcNr1.Fields(0) = 1203855 Then

' wykonywana jest część instrukcji Else
'If InStr(rcNr1.Fields(0), b & Chr(45) & c) > 0 Then

' ponieważ zmienne b="" i c="" (to puste ciągi znaków), szukanym ciągiem
w rcNr1.Fields(0) jest znak "-"
'zmienna a także = "" (ta zapisywana w polu ![a])


Ale nie jestem w stanie dokładnie przeanalizować Twojego rozwiązania.


Czy ty przypadkiem nie masz zapisanych danych odnośnie zamówienia w
trzech kolejnych wierszach tabeli?


--
Pozdrawiam
Zbigniew Bratko
adminBEZTEGO.vcf

Kali

unread,
Nov 26, 2020, 11:19:19 AM11/26/20
to
Jeszcze raz przeczytałem, zrozumiałem i poprawiłem na:

If InStr(rcNr1.Fields(0), b & Chr(45) & c) > 0 And Len(a) > 3 Then

i działa o wiele piękniej.
Jeszcze raz dziękuje
sk
0 new messages