Diskuze: chyba VB při použití příkazu INTO OUTFILE ... generování CSV souboru (sestavy) z DB
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 15 zpráv z 15.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Psal jsem ti i na dotnetportal.cz, přepiš to do .NET a ulehčíš si život, protože budeš mít k dispozici spustu nástrojů na to, co chceš udělat...
no .NET vůbec nepoužívám a ni jsem v něm nikdy nedělal, proto by pro mě bylo rychlejší, přepsat správně kod ve VB a už bych se \tím nemusel "nikdy" zabývat .... L.
To slovo "nikdy" je dost zavádějící, protože stačí, aby se něco změnilo ve vstupních datech, nebo někdo chtěl něco navíc (jako právě řešíš teď) a problém je na světě... Když se koukneš tady do tutoriálů, zjistíš, že to zase až tak složité není a možnost později program doplnit či rozšířit je k NEZAPLACENÍ...
INTO musí být před FROM
dbs.Execute"SELECT val(right(login.login,6)) as oec,
count(volba) As pocet_obedu,
pocet_obedu * " & gsCesta_c & " as celkova_castka,
prijmeni,
jmeno
INTO OUTFILE 'I:\obedy\sestavy\sestava.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
FROM objednavky
inner join Login ON objednavky.login = login.login WHERE (MONTH(den)= '" & mesic & "' and YEAR(den)= '" & kdy3 & "')
group by login.login, prijmeni,jmeno order by prijmeni;"
Nevím kde a v čem to píšeš, ale je to čuňárna
Díky za odpověď. no čuňárna to asi je, jak jsem říkal, za
čistokrevného programátora se úplně nepovažuju ...
Nicméně, kod píšu přímo do okna v projektu VB, respektive do kodu, v tomto
případě, command tlačítka (clic).
Když tam kod zapíši, vypadá to následovně a VB vlastně ještě před
kompilací barevně vyznačí kod takto, viz. příloha a v tom mám právě tu
potíž. protože tu "zelenou" část považuje program za "poznámku" a před
kompilací vypíše chybu ... za normálních okolností se text "neprobarví" a
program se spustí ...
zkoušel jsem i _& jako pokračování kodu na dalším řádku, ale také to nepomohlo, ani při zadání kodu do jednoho řádku, ty apostrofy tam prostě "zlobí" ...
díky
Díky za odpověď. no čuňárna to asi je, jak jsem říkal, za
čistokrevného programátora se úplně nepovažuju ...
Nicméně, kod píšu přímo do okna v projektu VB, respektive do kodu, v tomto
případě, command tlačítka (clic).
Když tam kod zapíši, vypadá to následovně a VB vlastně ještě před
kompilací barevně vyznačí kod takto, viz. příloha a v tom mám právě tu
potíž. protože tu "zelenou" část považuje program za "poznámku" a před
kompilací vypíše chybu ... za normálních okolností se text "neprobarví" a
program se spustí ...
zkoušel jsem i _& jako pokračování kodu na dalším řádku, ale také to nepomohlo, ani při zadání kodu do jednoho řádku, ty apostrofy tam prostě "zlobí" ...
díky
To je přeci logické Visual Basic považuje apostrof jako začátek poznámky, zkusil bych si tu cestu udělat jako proměnnou (nějaký string)
Zkus to takto:
sSQL = "SELECT val(right(login.login,6)) as oec," & _
"count(volba) As pocet_obedu," & _
"pocet_obedu * " & gsCesta_c & " as celkova_castka," & _
"prijmeni, jmeno" & _
" INTO OUTFILE 'I:\obedy\sestavy\sestava.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'" & _
" FROM objednavky" & _
"inner join Login ON objednavky.login = login.login WHERE (MONTH(den)= '" & mesic & "' and YEAR(den)= '" & kdy3 & "')" & _
"group by login.login, prijmeni,jmeno order by prijmeni;"
dbs.Execute sSQL
Marku, díky za radu, teď už to vypadá o poznání lépe, tedy vyřešil jsi problém s apostrofem. po deklaraci proměně jako string (public sSQL as string) se mi ale objevila chyba, ze které moc moudrý nejsem, nehodlám dokola "otravovat", spoustu podobných chyb jsem při vytváření programu opravil, ale ...
Zkusil bych si pomocí MSGBOX vypsat co ti vlastně do té proměnné
jde.
Možná bylo správně to tvé staré umístění INNER ale je to proti SQL
syntaxi
Zkus zrušit všechny ty " & _ na koncích řádků, ono si to VS odřádkuje samo...
No nanejvýš to podtržítko ten amp je tam kvůli spojování řetězců
Už jsem to asi našel
Šlo o mezeru před inner a když dáš před každý řádek mezeru nic tím
nezkazíš
sSQL = "SELECT val(right(login.login,6)) as oec," & _
"count(volba) As pocet_obedu," & _
"pocet_obedu * " & gsCesta_c & " as celkova_castka," & _
"prijmeni, jmeno" & _
" INTO OUTFILE 'I:\obedy\sestavy\sestava.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'" & _
" FROM objednavky" & _
" inner join Login ON objednavky.login = login.login WHERE (MONTH(den)= '" & mesic & "' and YEAR(den)= '" & kdy3 & "')" & _
" group by login.login, prijmeni,jmeno order by prijmeni;"
dbs.Execute sSQL
Právě, že bys musel odstranit všechno - Visual Studio si to odřádkuje samo. Tím bys na tu chybu přišel hned...
Zobrazeno 15 zpráv z 15.