mojaSymfonia FORUM
https://forum.mix-soft.pl/

Program AMBasic
https://forum.mix-soft.pl/viewtopic.php?f=15&t=10005
Strona 1 z 1

Autor:  D_a125 [ 2021-08-07, 11:21 ]
Tytuł:  Program AMBasic

Witam,
Dostałem taki kod do przerobienia i nie mam pomysłu jak to mogę zrobić, program współpracuje z plikiem xml gdzie są podne nazwy faktur ( /EXP/, FA/, /POZ/, /T1/). Kod ma za zadanie wyszukać nazwe faktury i skopiować ją w całości do osobnego pliku.

Kod:
Int Numer_plikuu
String zawartosc_tab(1)
String pocz
String konc3
String naglowek = ""
String stopka = ""
int licznik_wpis = 0
int licznik3 = 0
int licznik4 = 0
int licznik5 = 0
int licznik6 = 0

if (ko ==15 ) then
   Numer_plikuu = Open sDokumentExport  For input
   if !Numer_plikuu Then
      message using "%s", "Nie udalo się otworzyć pliku"
      print "Nie udalo się otworzyć pliku"
   else
      licznik = 1      // ponieważ pierwsza linia zawiera nagłówek
            
      iIleLini = IleLini(sDokumentExport)
      Grow zawartosc_tab, iIleLini
      //Wpisywanie całego pliku do tablicy
      while ( licznik <= iIleLini)
         buf = ""
         Input # Numer_plikuu, Zawartosc
         zawartosc_tab(licznik) = Zawartosc
         licznik = licznik + 1
      wend
      licznik = 1
      //Dodawanie 29 pierwszych linii do każdego z plików
      while ( licznik <= 29)
         naglowek = naglowek + zawartosc_tab(licznik)
         licznik = licznik + 1
      wend
      Print # iPlikWynikowyEXP; naglowek
      Print # iPlikWynikowyFA; naglowek
      Print # iPlikWynikowyPOZ; naglowek
      Print # iPlikWynikowyT1; naglowek
      licznik = 1
      //Przeszukiwanie tablicy w poszukiwaniu odpowiednich rekordów
      while ( licznik <= iIleLini)
         pocz = zawartosc_tab(licznik)
         Buf = pocz
         konc3 = Find Regular "/<tns/:P/_2B>"
         If konc3 != "<tns:P_2B>" then            
            konc3 = Find Regular "FA//"
            if konc3 == "FA/" then
               licznik_wpis = licznik-2
               //Wpisywanie rekordów rdo pliku FA.xml
               licznik3 = licznik
               licznik4 = licznik+30
               licznik5 = licznik
               while (licznik3<=licznik4)
                  pocz = zawartosc_tab(licznik3)
                  Buf = pocz
                  konc3 = Find Regular "/<//tns/:Faktura/>"
                  if konc3 == "</tns:Faktura>" then
                     licznik6 = licznik3+2
                  endif
                  licznik3 = licznik3 + 1   
               wend
               licznik3 = licznik
               while (licznik5<=licznik6)
                  Print # iPlikWynikowyFA; zawartosc_tab(licznik_wpis)
                  licznik_wpis = licznik_wpis+1
                  licznik5 = licznik5 +1
               wend
            else
               konc3 = Find Regular "//EXP//"
               if konc3 == "/EXP/" then
                  licznik_wpis = licznik-2
                  //Wpisywanie rekordów do pliku EXP.xml
                  licznik3 = licznik
                  licznik4 = licznik+30
                  licznik5 = licznik
                  while (licznik3<=licznik4)
                     pocz = zawartosc_tab(licznik3)
                     Buf = pocz
                     konc3 = Find Regular "/<//tns/:Faktura/>"
                     if konc3 == "</tns:Faktura>" then
                        licznik6 = licznik3+2
                     endif
                     licznik3 = licznik3 + 1   
                  wend
                  licznik3 = licznik
                  while (licznik5<=licznik6)
                     Print # iPlikWynikowyEXP; zawartosc_tab(licznik_wpis)
                     licznik_wpis = licznik_wpis+1
                     licznik5 = licznik5 + 1
                  wend
                     licznik_wpis = licznik-2
                  else
                     konc3 = Find Regular "//POZ//"
                     if konc3 == "/POZ/" then
                        licznik_wpis = licznik-2
                        //Wpisywanie rekordów do pliku POZ.xml
                        licznik3 = licznik
                        licznik4 = licznik+30
                        licznik5 = licznik
                        while (licznik3<=licznik4)
                           pocz = zawartosc_tab(licznik3)
                           Buf = pocz
                           konc3 = Find Regular "/<//tns/:Faktura/>"
                           if konc3 == "</tns:Faktura>" then
                              licznik6 = licznik3+2
                           endif
                           licznik3 = licznik3 + 1   
                        wend
                        licznik3 = licznik
                        while (licznik5<=licznik6)
                           Print # iPlikWynikowyPOZ; zawartosc_tab(licznik_wpis)
                           licznik_wpis = licznik_wpis+1
                           licznik5 = licznik5 +1
                        wend
                        licznik_wpis = licznik-2
                     else
                        konc3 = Find Regular "//T1//"
                        if konc3 == "/T1/" then
                           licznik_wpis = licznik-2
                           //Wpisywanie rekordów do pliku T1.xml
                           licznik3 = licznik
                           licznik4 = licznik+30
                           licznik5 = licznik
                        while (licznik3<=licznik4)
                           pocz = zawartosc_tab(licznik3)
                           Buf = pocz
                           konc3 = Find Regular "/<//tns/:Faktura/>"
                           if konc3 == "</tns:Faktura>" then
                              licznik6 = licznik3+2
                           endif
                           licznik3 = licznik3 + 1   
                        wend
                        licznik3 = licznik
                        while (licznik5<=licznik6)
                           Print # iPlikWynikowyT1; zawartosc_tab(licznik_wpis)
                           licznik_wpis = licznik_wpis+1
                           licznik5 = licznik5 +1
                        wend
                        licznik_wpis = licznik-2      
                     endif
                  endif
               endif
            endif
         endif
         licznik = licznik + 1
      wend
      stopka = "</tns:JPK>"
      Print # iPlikWynikowyEXP; stopka
      Print # iPlikWynikowyFA; stopka
      Print # iPlikWynikowyPOZ; stopka
      Print # iPlikWynikowyT1; stopka

      Close iPlikWynikowyEXP
      Close iPlikWynikowyFA
      Close iPlikWynikowyPOZ
      Close iPlikWynikowyT1
      Close Numer_plikuu
   endif
endif

Autor:  Arek44 [ 2021-09-09, 23:53 ]
Tytuł:  Re: Program AMBasic

Chyba lepiej byłoby do odczytu nazw faktur wykorzystać np. Microsoft.XMLDOM skoro to plik XML i odczytać tylko pole z numerem.

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/