Konwersja pliku docx na plik gotowy do wgrania do bazy danych

Odpowiedz Nowy wątek
2018-11-13 20:59

Rejestracja: 1 rok temu

Ostatnio: 1 rok temu

0

Cześć od razu proszę o wyrozumiałość bo jestem jeszcze świeży w tym temacie. Ogólnie mój problem polega na tym że mam plik docx z 530 pytaniami i potrzebuje go przekonwertować go na plik tak żeby od razu był gotowy do wgrania do bazy. Głównie mi chodzi o to żeby pousuwało oznaczenia odpowiedzi a,b,c,d i żeby access zczytał mi to każdą odpowiedź jako oddzielną kolumne.

Pozostało 580 znaków

2018-11-13 21:22

Rejestracja: 11 lat temu

Ostatnio: 4 godziny temu

1

Post roku.

Wiem jak zrobić z tego pliku plik gotowy do bazy ale chodzi mi o to czy jest jakiś sposób żeby posegregować te odpowiedzi i pytania na inne kolumny niż ręcznie to robić. - JakubWozniak 2018-11-13 21:34

Pozostało 580 znaków

2018-11-13 22:06

Rejestracja: 17 lat temu

Ostatnio: 59 minut temu

0

To pytanie z cyklu, samochód mi nie działa, co trzeba zrobić aby zaczął jeździć?

Po pierwsze nie wiemy co jest w pliku docx, domyślam się, że używasz accessa, nie wiem co to znaczy plik gotowy do wgrania.

Więc ogólnie odpowiem, da się.

Pozostało 580 znaków

2018-11-13 22:35

Rejestracja: 1 rok temu

Ostatnio: 1 rok temu

0
Panczo napisał(a):

To pytanie z cyklu, samochód mi nie działa, co trzeba zrobić aby zaczął jeździć?

Po pierwsze nie wiemy co jest w pliku docx, domyślam się, że używasz accessa, nie wiem co to znaczy plik gotowy do wgrania.

Więc ogólnie odpowiem, da się.

W pliku znajduję się 530 pytań z egzaminu ee.08

Pozostało 580 znaków

2018-11-13 22:36

Rejestracja: 17 lat temu

Ostatnio: 59 minut temu

1

Samochód jest osobowy.

Pozostało 580 znaków

2018-11-13 22:40

Rejestracja: 1 rok temu

Ostatnio: 1 rok temu

0
Panczo napisał(a):

Samochód jest osobowy.

W pliku jest 530 pytań posegregowane od 1 do 530.
Chcę wgrać to do accessa tak żeby utowrzyło mi z tego kolumny oddzielna na treść pytania i każda oddzielna na jedną odpowiedź

Czyli ten samochód wcześniej odpalał. - kate87 2018-11-14 10:20

Pozostało 580 znaków

2018-11-13 22:44

Rejestracja: 17 lat temu

Ostatnio: 59 minut temu

0

Zadałem w poście 3 pytania, na razie jak mantrę powtarzasz że jest ich 530. Czego oczekujesz? Nie mam szklanej kuli więc nie wiem jak ten dokument wygląda.

Więc powtórzę da się.

Pozostało 580 znaków

2018-11-13 22:49

Rejestracja: 3 lata temu

Ostatnio: 1 godzina temu

0

Pokaż strukturę pliku, a pewnie lepiej gdybyś go wrzucił do np. .txt

edytowany 1x, ostatnio: WeiXiao, 2018-11-13 22:50

Pozostało 580 znaków

2018-11-13 22:51

Rejestracja: 1 rok temu

Ostatnio: 1 rok temu

0

Plik txt z pytaniami

Pozostało 580 znaków

2018-11-13 23:07

Rejestracja: 11 lat temu

Ostatnio: 4 godziny temu

0

Jak poprawisz pytania od 129 do 138, 151-313 i 506 to da się napisac makro , które zaimportuje to do Excela.

Pozostało 580 znaków

2018-11-14 00:40

Rejestracja: 17 lat temu

Ostatnio: 59 minut temu

3

najpierw musisz przygotować ten plik, chodzi o to by miał każde pytanie w jednej linii i brak pustych, oraz trzeba usunąć taby.
Najprościej użyć notepad++ i usunąć puste linie + nagłówek + tabulatory
Poprawy wymagają pytania: 7, 59, 60, 170, 183, 348
Brak jest pytania 500

Później odpalasz Access z danych zewnętrznych pobierasz plik txt (musi mieć nazwę zgodną z DOS, czyli nie może mieć kropki w nazwie i max 8 znaków)
Podczas importu

  1. Klikasz zawansowane i zmieniasz kodowanie na Środkowoeuropejski (Windows)
  2. Wybierasz ograniczony
  3. Nazwa pola zmieniasz na linia
  4. Typ danych na długi tekst
  5. Zaznaczasz: pozwalaj programowi Access dodać klucz podstawowy
  6. Importuj do tabeli plik

W wyniku tej operacji będziesz miał tabelą plik z polami linia i identyfikator, zweryfikuj czy identyfikator odpowiada linii zaimportowanej.

Jeżeli wszystko się zgadza to tworzysz takie zapytanie w kwerendzie:

select 
    pl.p+1
    , max(iif(pl.identyfikator=pid,pl.linia,null)) as Pytanie
    , max(iif(pl.identyfikator=pid+1,pl.linia,null)) as odpA
    , max(iif(pl.identyfikator=pid+2,pl.linia,null)) as odpB
    , max(iif(pl.identyfikator=pid+3,pl.linia,null)) as odpC
    , max(iif(pl.identyfikator=pid+4,pl.linia,null)) as odpD
into 
    wynik
from (SELECT 
        Identyfikator
        , linia
        , (identyfikator-1) \ 5 AS p
    FROM 
        plik) as pl 
inner join (
        select 
            p
            , min(Identyfikator) as pid
        from (
            SELECT 
                Identyfikator
                , linia
                , (identyfikator-1) \ 5 AS p
            FROM 
                plik) as dt
        group by 
        p) as tmp on tmp.p=pl.p
group by 
    pl.p

i uruchamiasz, w efekcie otrzymasz tabelę wynik, która wygląda tak:

screenshot-20181114003851.png

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0