Lech S.

Lech S. Główny Specjalista,
PZU Życie SA

Temat: Import wielowierszowego zestawu danych

Witajcie,
Mam taki problem. W tekstówce mam zestawy danych, który na nieszczęście prezentowany jest w postaci wielowierszowej, np.:

ID1
Imię1
Nazwisko1
adres1
Id2
Imię2
Nazwisko2
adres2

Niestety nie można zastosować żadnego unikalnego identyfikatora dla danego wiersza zawierającego np. imię.

Efekt finalny jaki chcę uzyskać to tabela:
ID imię nazwisko adres

Optymalne byłoby zaimportowanie co 5 wiersza w 4 osobne tabele, nadać rekordom ID i po ID je parować.

Ma ktoś pomysł, jak importować co n-ty wiersz z tekstówki?

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Lech S.

Lech S. Główny Specjalista,
PZU Życie SA

Temat: Import wielowierszowego zestawu danych

Raczej szukam pomysłu na wykorzystanie dostępnych w accesie rozwiązań :(
Michał Dziubek

Michał Dziubek Programista,
INFORM\'1

Temat: Import wielowierszowego zestawu danych

Najprościej stwórz tabele stwórz oczekiwaną tabelę później w vba napisz prosta pętle ktora bedzie cztała linijki po linijce i dodada to do niej
Paweł D.

Paweł D. Programista Analityk
- Firmowe Bazy
Danych

Temat: Import wielowierszowego zestawu danych

Public Sub CzytajLinieZpliku(SciekaINazwaDoPliku As String, Optional NrLini = 0)
Dim FileNumber
Dim OdczytanaLinia As String
Dim StrLine As String
Dim NrCzytanejLini As Long
Dim DodajLinie As Boolean
Dim SqlInsert As String

OdczytanaLinia = ""
NrCzytanejLini = 0
DodajLinie = True
FileNumber = FreeFile

Open SciekaINazwaDoPliku For Input As #FileNumber
Do While Not EOF(1)
Input #FileNumber, StrLine
NrCzytanejLini = NrCzytanejLini + 1
If NrLini > 0 Then
If ((NrCzytanejLini - 1) Mod NrLini) = 0 Then
DodajLinie = True
Else
DodajLinie = False
End If
End If
If DodajLinie Then
'--- Operacja na odczytanym wierszu - dodanie do jakiejsc tabeli
SqlInsert = "InSERT INTO MojaTabela (PoleDoczelowe) VALUES ('" & StrLine & "')"
Debug.Print SqlInsert
'DoCmd.RunSQL SqlInsert
'--------------------------------------
End If
Loop
Close #FileNumber

End Sub
Szymon P.

Szymon P. Databricks, Azure
Data Factory, MS SQL
SERVER

Temat: Import wielowierszowego zestawu danych

Leszek, akurat ten przypadek to doskonały przykład gdzie nawet nie trzeba pisać ani jednej linii kodu. Ja sobie wrzuciłem Twoje dane do kolumny A rozpoczynając od wiersza A1 i zarejestrowałem makro i nie musiałem nic pisać.

Pod spodem wygląda ono tak:



Option Explicit
Sub Makro4()
'
' Makro4 Makro
'
' Klawisz skrótu: Ctrl+a
'
Selection.Cut
ActiveCell.Offset(0, 2).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(1, -2).Range("A1").Select
Selection.Cut
ActiveCell.Offset(-1, 3).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(2, -3).Range("A1").Select
Selection.Cut
ActiveCell.Offset(-2, 4).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(3, -4).Range("A1").Select
Selection.Cut
ActiveCell.Offset(-3, 5).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(1, -5).Range("A1:A3").Select
Selection.EntireRow.Delete
ActiveCell.Select
End Sub



Jak chcesz - mozesz skorzystac z tego rozwiązania a zamiast rejestrować swoje makro po prostu podmienić kod. Później tylko wstawić wiersz z nazwami kolumn u góry, i zaimportować ręcznie do accessaSzymon P. edytował(a) ten post dnia 29.06.11 o godzinie 17:51
Paweł D.

Paweł D. Programista Analityk
- Firmowe Bazy
Danych

Temat: Import wielowierszowego zestawu danych

Szymon P.:
Leszek, akurat ten przypadek to doskonały przykład gdzie nawet nie trzeba pisać ani jednej linii kodu. Ja sobie wrzuciłem Twoje dane do kolumny A rozpoczynając od wiersza A1 i zarejestrowałem makro i nie musiałem nic pisać.

Pod spodem wygląda ono tak:


...


Jak chcesz - mozesz skorzystac z tego rozwiązania a zamiast rejestrować swoje makro po prostu podmienić kod. Później tylko wstawić wiersz z nazwami kolumn u góry, i zaimportować ręcznie do accessa

co ma makro wpisujące w kolumny w excelu do potrzeby importowania danych z plików tekstowych (*.txt) do pliku bazy msaccess (*.mdb) ???
A jak będę miał kilkaset takich plików i nie będę miał excela to dupa blada? :]
Szymon P.

Szymon P. Databricks, Azure
Data Factory, MS SQL
SERVER

Temat: Import wielowierszowego zestawu danych

a sory nie doczytałem że chodzi o "tekstówkę"Szymon P. edytował(a) ten post dnia 30.06.11 o godzinie 11:44
Marcin Urbański

Marcin Urbański E-commerce, analityk
szkolenia -
tel.:513272082

Temat: Import wielowierszowego zestawu danych

A ja mam inny sposób - nie lubię komplikacji.

1.W accessie po przez import - łączysz się z plikiem txt na sztywno (jeżeli taki format danych będziesz otrzymywał cyklicznie) lub importujesz sobie do Tabeli. Nazwijmy ją tmp. Masz również możliwość dopasowania strony kodowej txt.

2.Potem prosta kwere tworzącą tabelę - Nazwijmy ją wynikowa, wskazujesz mu wartości z pierwszych 3 kolumn ID Imię i Nazwisko i Adres. Tutaj jako klucz może pomocniczy ustawił bym połączenie imięnazwisko i adres. Uruchamiasz kwerendę.
3. wchodzisz w projekt nowo utworzonej tabeli wynikowej i ustawiasz nasz klucz pomocniczy - ten z koniukncji ww kolumn jako klucz główny
4. Tworzysz kwere dodającą też opartą na tmp i wskazujesz kolejne kolumny ID2 IMIE i NAZWISKO2 Adres2

Done. Masz wszystko w jednej tabeli rozplitowane i sprwdzone pod względem unikatowości rekordów.

Jeżeli taki rzeczy robisz cyklicznie to później wystarczy spiąć wszystkie kwerendy makrem i masz pod jednym przyciskiem cały proces :-)

Pozdrawiam
http://analitycydlabiznesu.pl
Paweł D.

Paweł D. Programista Analityk
- Firmowe Bazy
Danych

Temat: Import wielowierszowego zestawu danych

Marcin Urbański:
A ja mam inny sposób - nie lubię komplikacji.

Jakiej komplikacji ? ?
Napisany kod jest krótszy niż twój opis :]
Jeżeli taki rzeczy robisz cyklicznie to później wystarczy spiąć wszystkie kwerendy makrem i masz pod jednym przyciskiem cały proces :-)

Już nie pisałem możliwych sposobów wywołania funkcji, bo to zakładam nie będzie problem podpiąć funkcję pod przycisk i powiązać z polem które zawiera jakąś tam ścieżkę.

Pozdrawiam
http://analitycydlabiznesu.pl


Wiedzę że kolega preferuje makra
kto co woli :]
wiadomo - rozwiązań jest tyle ile osób

Następna dyskusja:

import danych i mapowanie r...




Wyślij zaproszenie do