🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.bazy-danych.msaccess
3 messages
3 total messages Started by Kali Wed, 18 Nov 2020 12:40
Rekordset Zle importuje pierwszy rekord
#134050
Author: Kali
Date: Wed, 18 Nov 2020 12:40
55 lines
1518 bytes
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
Re: Rekordset Zle importuje pierwszy rekord
#134051
Author: Zbigniew Bratko
Date: Fri, 20 Nov 2020 23:21
107 lines
2949 bytes
This is a multi-part message in MIME format.
--------------60B8DDEE52E2E4D871398E87
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit

W dniu 18.11.2020 o 21:40, Kali pisze:
> 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?


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

--------------60B8DDEE52E2E4D871398E87
Content-Type: text/x-vcard; charset=utf-8;
 name="adminBEZTEGO.vcf"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="adminBEZTEGO.vcf"

begin:vcard
fn:Zbigniew Bratko
n:Bratko;Zbigniew
note;quoted-printable:-- 	
	Pozdrowienia BraZby
	 www.faq.accdb.pl
	 www.accdb.pl
version:2.1
end:vcard


--------------60B8DDEE52E2E4D871398E87--
Re: Rekordset Zle importuje pierwszy rekord
#134056
Author: Kali
Date: Thu, 26 Nov 2020 08:19
6 lines
204 bytes
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
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads