IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Dotaz k převodu staré DB

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Michal Horáček:4.10.2017 10:29

Zdravím, nevím jsem-li tu správně neboť jsem úplný začátečník, ale rád bych Vás požádal o radu. Kdysi si udělal aplikaci v MS Access na evidenci domovní pošty a nyní jsem se rozhodl zkusit tuto aplikaci udělat ve VB.NET. VB.NET protože ho trochu znám. Mám, ale problém s dotazem, kterým načtu data ze staré databáze DB_OLD.MDB do nové. Nechce se mi to propojovat. Takže mám v rámci projektu ve Visual Studio 2017 WinForm VB.NET novou databázi DB_NEW.MDF. Vytvořil jsem dotaz, ale odkaz na exteriní DB_OLD.MDF mi stále nějak falíruje. :-)

INSERT INTO Table_NEW
                        (Adresat, Datum)
SELECT        Adresat, Datum
FROM            Table_OLD IN "" [DATABASE=C:\Users\Public\Documents\DB_OLD.MDB;];

Pokud budete mít tedy trochu času a nakopnete mně. Když už jsem se do toho pustil tak to chci dodělat. Díky

 
Odpovědět
4.10.2017 10:29
Avatar
dez1nd
Člen
Avatar
Odpovídá na Michal Horáček
dez1nd:4.10.2017 10:51

nefunguje operator IN trosku jinak ? neni jen IN zjednoduseni vicero podminek WHERE ? myslim tim zjednoduseni, ze toto
SELECT * FROM XXX WHERE id = 1 AND id = 2 AND id= 3 se zapise jednoduse jako SELECT * FROM XXX WHERE id IN (1,2,3) ?

 
Nahoru Odpovědět
4.10.2017 10:51
Avatar
dez1nd
Člen
Avatar
Odpovídá na dez1nd
dez1nd:4.10.2017 10:58

narazil jsem na toto

FROM Table_OLD IN '' ';database=C:\db\db2.mdb;PWD=mypwd'
 
Nahoru Odpovědět
4.10.2017 10:58
Avatar
Michal Horáček:4.10.2017 11:06

Bohužel stále to stejné. Chyba Incorrect syntax near the keyword 'FROM'. Pořád někde chyba v definici cesty. Když zkusím dvě tabulky v rámci projektu tak to chodí.

 
Nahoru Odpovědět
4.10.2017 11:06
Avatar
Odpovídá na Michal Horáček
Michal Štěpánek:4.10.2017 16:27

Podle mě to jít takto nemůže, protože DB_OLD.MDB není tabulka, ale samostatná databáze. Obávám se, že to v jednom dotazu nepůjde.
Nešlo by udělat si dva různé connectionstringy (jeden na DB_OLD.MDB, druhý na DB_NEW.MDF), přes první "constr" udělat select na tabulku v té staré DB, výsledek uložit někam do nějaké kolekce a pak přes druhý "constr" uložit data z kolekce do nové DB?
Nebo nějak vyexportovat data třeba do CSV a pak naimportovat?

Nahoru Odpovědět
4.10.2017 16:27
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Horáček
Michal Štěpánek:4.10.2017 16:32

Osobně bych to asi řešil tak, že si ve Visual studiu připojím obě databáze, v nové databázi vytvořím stejnou tabulku (jako tu, kterou chci převádět) a data do ní prostě zkopíruji. Pak už je jednoduché v dotazu použít více tabulek ze stejné databáze...

Nahoru Odpovědět
4.10.2017 16:32
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Michal Horáček:4.10.2017 18:28

Je zajímavé, že jsem našel na msdn.microsoft návody:
Pro MS ACCESS

SELECT CustomerID
FROM Customers
IN OtherDB.mdb
WHERE CustomerID Like "A*";

a pak jsem danou tabulku z Access vyexportoval do dbf IV

SELECT CustomerID
FROM Customer
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE CustomerID Like "A*";

Vyzkoušel jsem oboje a nefunguje mi ani jedno. Pořád tam vadí IN nebo FROM.

 
Nahoru Odpovědět
4.10.2017 18:28
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na Michal Horáček
gcx11:4.10.2017 18:32

V tom druhém máš FROM Customer

 
Nahoru Odpovědět
4.10.2017 18:32
Avatar
Michal Horáček:4.10.2017 18:35

To jsou originál z webu. Já jsem je samozřejmě modifikoval na mé názvy.

 
Nahoru Odpovědět
4.10.2017 18:35
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na Michal Horáček
gcx11:4.10.2017 19:26

Ještě můžeš zkusit přidat k FROM prefix s názvem databáze:

SELECT ... FROM database_name.table_name ...
Editováno 4.10.2017 19:27
 
Nahoru Odpovědět
4.10.2017 19:26
Avatar
Neaktivní uživatel:4.10.2017 20:25

Nebude problem napr. vo verzii databaze? Mozno je tam urcita nekompaktibilita.

Nahoru Odpovědět
4.10.2017 20:25
Neaktivní uživatelský účet
Avatar
Michal Horáček:4.10.2017 22:32

Formát databáze je tam určený. Zajímavé je, že pouze u Access to není, ale třeba i pro import z Excel se to definuje.

......
FROM Customer
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
.....

Už jsem to vymyslel přes BindingSource. Jeden vzorkuji a druhý se plní.
Takže děkuji. Stejně to ale nějak musí jít.

 
Nahoru Odpovědět
4.10.2017 22:32
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.