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

Import danych z Excela

3 views
Skip to first unread message

Radosław Brunke

unread,
Feb 26, 2006, 11:38:41 AM2/26/06
to
Witam wszystkich
Mam następujący problem: po imporcie danych do istniejących tabel z Excela
wszystkie pola tytu text tabel są uzupełnione z tyłu spacjami (aż do
określonej ilości znaków). Import był przeprowadzany metodą "trywialną"
czyli z menu Plik->Pobierz dane zewnętrzne. Obie aplikacje są w wersji 2000.

Czy istnieje jakiś sposób na to aby zaktualizować te dane: wyciąć spacje z
końca - wiem, że VBA obsługuje funkcję RTrim i można by ją jakoś tu
wykorzystać (??). Czy dałoby się jednak to zrobić z poziomu SQL - jakąś
skomplikowaną UPDATE ??

Problem polega na tym, że teksty te mają różną długość, gdyby była ona stała
np. 5 znaków to działałoby:
UPDATE Dane SET Imię = LEFT(imię, 5)

Pozdrawiam
Radosław Brunke

Radosław Brunke

unread,
Feb 26, 2006, 11:54:55 AM2/26/06
to
zapomniałem napisać, że :
UPDATE Dane SET Imię = RTrim(Imię)
z jakiegoś powodu nie działa,
pomimo tego, że:
SELECT RTrim(Imię) from Dane
zwraca prawidłowe (obcięte) wartości

Radosław Brunke


Sławek SWP

unread,
Feb 26, 2006, 12:10:48 PM2/26/06
to
W: news:dtsmhs$svc$1...@atlantis.news.tpi.pl
Od: Radosław Brunke <rad...@nieprawdziwyadres.com>
Było:

Sprawdzony sposób to załączyć arkusz jako tabelę...
Pomniędzy źródłową (excel) a docelową (access) tabelą aktualizować
kwerendą... W tej kwerendzie działają wszystkie funkcje.

W przeciwnym przypadku musisz zainteresować się pozycją helpa: "Importowanie
lub łączenie tabel baz danych SQL lub danych z innych źródeł ODBC"

Ogólnie temat jest opisany w "Importowanie lub łączenie danych oraz
importowanie obiektów bazy danych"

--
Sławek SWP - Przy odpowiedzi na priv usuń 2 nadwyżki
Ekspert to człowiek, który przestał myśleć - on wie :-)

Radosław Brunke

unread,
Feb 26, 2006, 12:24:39 PM2/26/06
to
Użytkownik "Sławek SWP" <skasujdamspie...@wp.pl> napisał w
wiadomości news:dtsnf4$36c$1...@atlantis.news.tpi.pl...

> Sprawdzony sposób to załączyć arkusz jako tabelę...
> Pomniędzy źródłową (excel) a docelową (access) tabelą aktualizować
> kwerendą... W tej kwerendzie działają wszystkie funkcje.

Dobry pomysł i tak pewnie będę robił w przyszłości. Sprawdziłem też, że w
przypadku importowania danych do nowej tabeli Access nie dodaje żadnych
spacji więc wystarczyłoby zaimportować dane do nowej tabeli i zaktualizować
tę właściwą.

> W przeciwnym przypadku musisz zainteresować się pozycją helpa:
> "Importowanie lub łączenie tabel baz danych SQL lub danych z innych
> źródeł ODBC" Ogólnie temat jest opisany w "Importowanie lub łączenie
> danych oraz importowanie obiektów bazy danych"

Patrzałem sobie na tego helpa i opisuje tylko problemy natury technicznej
związnych z importem. Zaraz sobie przeczytam dokładniej ale wątpię czy tam
coś znajdę.
Mam dalej problem co zrobić z istniejącymi danymi, które są spójne i
powiązane relacjami. Póki co nie jest źle bo mogę sobie robić SELECT i
RTrim-ować wszystkie pola tekstowe, ale nie jest to rozwiązanie optymalne.

A tak co do aktualizacji próbowałem już kombinacji:
UPDATE Dane SET Imię = LEFT([imię],Len(rtrim([imię])));
i też nie działa... pytanie dlaczego ?

Pozdrawiam
Radosław Brunke


Sławek SWP

unread,
Feb 26, 2006, 4:33:28 PM2/26/06
to
W: news:dtsobu$fqj$1...@nemesis.news.tpi.pl

Od: Radosław Brunke <rad...@nieprawdziwyadres.com>
Było:
>> ...

>> innych źródeł ODBC" Ogólnie temat jest opisany w "Importowanie
>> lub łączenie danych oraz importowanie obiektów bazy danych"
>
> Patrzałem sobie na tego helpa i opisuje tylko problemy natury
> technicznej związnych z importem. Zaraz sobie przeczytam
> dokładniej ale wątpię czy tam coś znajdę.

Można ustawić parametry importu (w pliku parametrycznym!)

> Mam dalej problem co zrobić z istniejącymi danymi, które są
> spójne i powiązane relacjami. Póki co nie jest źle bo mogę sobie
> robić SELECT i RTrim-ować wszystkie pola tekstowe, ale nie jest
> to rozwiązanie optymalne.
> A tak co do aktualizacji próbowałem już kombinacji:
> UPDATE Dane SET Imię = LEFT([imię],Len(rtrim([imię])));
> i też nie działa... pytanie dlaczego ?


Taka postać chyba będzie lepsza...
UPDATE Tabela1 SET [Tabela1].[imię] = RTrim([Tabela1]![imię]);
Podczas pisania funkcji w "konstruktorze wyrażeń" access podpowiada liczbę i
pożądaną postać argumentów!

Na czym poza tym polega "niedziałanie"?

Radosław Brunke

unread,
Feb 27, 2006, 2:38:16 PM2/27/06
to
Użytkownik "Sławek SWP" <skasujdamspie...@wp.pl> napisał w
wiadomości news:dtt6rj$6ve$1...@atlantis.news.tpi.pl...

>> Mam dalej problem co zrobić z istniejącymi danymi, które są
>> spójne i powiązane relacjami. Póki co nie jest źle bo mogę sobie
>> robić SELECT i RTrim-ować wszystkie pola tekstowe, ale nie jest
>> to rozwiązanie optymalne.
>> A tak co do aktualizacji próbowałem już kombinacji:
>> UPDATE Dane SET Imię = LEFT([imię],Len(rtrim([imię])));
>> i też nie działa... pytanie dlaczego ?
> Taka postać chyba będzie lepsza...
> UPDATE Tabela1 SET [Tabela1].[imię] = RTrim([Tabela1]![imię]);
> Podczas pisania funkcji w "konstruktorze wyrażeń" access podpowiada
> liczbę i pożądaną postać argumentów!
Podana przez Ciebie lepsza postać też nie działa.

> Na czym poza tym polega "niedziałanie"?

Niedziałanie polega na tym, że:
1. przykładowa wartość pola Imię w tabeli Dane bazy:
'Oktawia '
2. Wykonuję kwerendę:
UPDATE Dane SET Dane.Imię = RTrim(Dane!Imię);
3. Wartość pola podanego w pkt. 1:
'Oktawia '

Zdaję sobie sprawę, że może temat dyskusji (Import danych z Excela) odbiega
dość mocno od bieżącego stanu problemu, ale nie wiem czy ma sens zakładać
nowy wątek?

Pozdrawiam
Radek Brunke


Sławek SWP

unread,
Feb 28, 2006, 3:30:40 AM2/28/06
to
W: news:dtvkft$c92$1...@atlantis.news.tpi.pl

Od: Radosław Brunke <rad...@nieprawdziwyadres.com>
Było:
> ...
> Zdaję sobie sprawę, że może temat dyskusji (Import danych z
> Excela) odbiega dość mocno od bieżącego stanu problemu, ale nie
> wiem czy ma sens zakładać nowy wątek?

Jak chcesz to prześlij mi bazę access i przykładowe dane w excelu...
U mnie usuwanie spacji z końca tekstu działa...


Tylko popraw adres...

Krzysztof Naworyta

unread,
Feb 28, 2006, 5:57:24 AM2/28/06
to
Radosław Brunke <rad...@nieprawdziwyadres.com> napisał:


(...)


| Niedziałanie polega na tym, że:
| 1. przykładowa wartość pola Imię w tabeli Dane bazy:
| 'Oktawia '
| 2. Wykonuję kwerendę:
| UPDATE Dane SET Dane.Imię = RTrim(Dane!Imię);
| 3. Wartość pola podanego w pkt. 1:
| 'Oktawia '

a czy tam są rzeczywiście spacje ?
A może spacja nierozdzielająca ? (asc 160)

wykonaj taką kwerendę:

select
asc(right(imie,1))
from
...

--
KN

Radosław Brunke

unread,
Feb 28, 2006, 1:30:34 PM2/28/06
to
Użytkownik "Krzysztof Naworyta" <k.naw...@datacomp.com.pl> napisał w
wiadomości news:du1ab0$hkf$1...@news.onet.pl...

> a czy tam są rzeczywiście spacje ?
> A może spacja nierozdzielająca ? (asc 160)
> wykonaj taką kwerendę:
> select
> asc(right(imie,1))
> from
> ...
Wygląda jednak na to, że są tam spacje (ASC 32) a kwerenda nie chce ich
usuwać. Wysłałem tę bazę do Sławka SWP. Zobaczymy może to problem z moją
wersją Accessa (ze strony MS nic mnie nie zdziwi już), albo ja coś robię nie
tak.
Pozdrawiam
Radosław Brunke


Sławek SWP

unread,
Feb 28, 2006, 5:23:47 PM2/28/06
to
W: news:du24t4$spb$1...@atlantis.news.tpi.pl

Od: Radosław Brunke <rad...@nieprawdziwyadres.com>
Było:

Znalazłem sposób na umożliwienie zadziałania edycji pola w zakresie
wycinania spacji...
Ani funkcją, ani "ręcznie" nie można zapisać w tabeli treści o innej
długości niż 40 znaków (ustawione w definicji pola).
Jeśli zmienisz w ustawieniach definicji pola "Kompresja UTF" z NIE na TAK,
zapamiętasz tabelę i zmienisz ponownie na poprzednią wartość, to zadziała
usuwanie spacji funkcją lub ręcznie.

Wygląda na to, że podczas importu danych coś się zapisało w definicji tabeli
i żeby to coś usunąć musisz wymusić zapisanie tych wartości, które są
wyświetlane w parametrach pola.
Jak napiszesz rekord z danymi ucznia w innym niż ten "niedobry" arkuszu
excela i go zaimportujesz to też jest ten efekt(?) U mnie nie...

Nie znam się aż tak na ukrytych właściwościach tabel, musisz pomolestować
Krzyśków ( http://www.access.vis.pl/ ) albo innych guru grupy.

Po wymuszeniu wpisania parametrów - zgodnych z tym co widać - dodawanie
rekordów za pomocą kwerendy dołączającej z załączonego arkusza excellowego
po prostu działa.

Krzysztof Naworyta

unread,
Mar 1, 2006, 4:48:37 AM3/1/06
to
Sławek SWP <skasujdamspie...@wp.pl> napisał:

| Wygląda na to, że podczas importu danych coś się zapisało w definicji
| tabeli i żeby to coś usunąć musisz wymusić zapisanie tych wartości,
| które są wyświetlane w parametrach pola.

create table test1
(
id autoincrement constraint PrimeryKey Primary Key
, pole1 char(10)
, pole2 text(15)
)


insert into test1 (pole1, pole2) Values 'ala', 'ola'
insert into test1 (pole1, pole2) Values 'jasiu', 'zosia'
insert into test1 (pole1, pole2) Values 'genowefa', 'mariolka'

SELECT
id
, pole1
, pole2
, len(pole1) as d1
, len(pole2) as d2
, asc(right(pole1,1)) as ostatni
FROM test1

może to ten przypadek ?

Jak ktoś nie widzi, to zaznaczę: pole1 zdefiniowane zostało jako char, a
nie text !
(stała szerokość pola!)

--
KN

Sławek SWP

unread,
Mar 1, 2006, 2:46:47 PM3/1/06
to
W: news:du3qlk$6q5$1...@news.onet.pl
Od: Krzysztof Naworyta <k.naw...@datacomp.com.pl>
Było:
> ...

> Jak ktoś nie widzi, to zaznaczę: pole1 zdefiniowane zostało jako
> char, a nie text !
> (stała szerokość pola!)

Niestety nawet nie wiem gdzie się zagląda żeby obejrzeć procedurę wykonywaną
po uruchomieniu |Plik > Pobierz dane zewnętrzne > Importuj > ...|
Mógłbyś podpowiedzieć(?) Tak dla zaspokojenia próżnej ciekawości :D

Krzysztof Naworyta

unread,
Mar 1, 2006, 5:18:48 PM3/1/06
to
Juzer Sławek SWP <skasujdamspie...@wp.pl> napisał

(...)


| Niestety nawet nie wiem gdzie się zagląda żeby obejrzeć procedurę
| wykonywaną po uruchomieniu |Plik > Pobierz dane zewnętrzne > Importuj >
| ...|
| Mógłbyś podpowiedzieć(?) Tak dla zaspokojenia próżnej ciekawości :D


Nie nie nie!

Ja też nie mam pojęcia jak to robi access i dlaczego ewent. zrobił to jako
"Create ... char ..."
Ja tylko mówię, że objaw jest podobny.
(Oczywiście można zajrzeć do "kreatorów", pobierając ich wersję mdb
zamiast skompilowanych mde, ale tylko dla a'97, i wątpię aby to wiele
rozjaśniło ...)

Jakkolwiek Tobie udało się ową "anomalię" przeklikać, a mnie po owym
"Create" ni ch*ja!

Ja tylko głośno myślę! Może ktoś zabrnie dzięki temu dalej i mnie oświeci
...
A może to tylko jakaś chwilowa (?) wada pliku xls ?

--
KN

0 new messages