Jak przenieść wartości między tabelami?
fArmer - 13-11-2006 00:47
Jak przenieść wartości między tabelami?
Witam Problem jest następujący - chciałbym sumę wyznaczoną w tabeli temp w kolumnie "+papier1+" i wierszu o numerze_zlecenia przenieść do tabeli magazyn do tej samej kolumny i wiersza ("+papier1+" i numer_zlecenia). Probowałem kilka opcji ale program krzyczy że źle:
var query="INSERT INTO magazyn ("+papier2+") VALUES (SELECT SUM("+papier2+") FROM temp) WHERE numer_zlecenia=("+numer+")";
W temacie nie czuje się najlepiej, tym bardziej ze całość projektu jest "lekko" zakręcona - formularz robiony w Adobe Acrobat 7 Prof korzystając z ADBC (Adobowa wersja ODBC) łączy się z Accesową bazą danych ;) Pozdrawiam i z góry dziękuję za pomoc fArmer
Grzegorz Danowski - 13-11-2006 00:47
Użytkownik "fArmer" <Bartek.Pasierb@gmail.com> napisał w wiadomości news:1162765898.085254.203750@e3g2000cwe.googlegro ups.com... <cite> Witam Problem jest następujący - chciałbym sumę wyznaczoną w tabeli temp w kolumnie "+papier1+" i wierszu o numerze_zlecenia przenieść do tabeli magazyn do tej samej kolumny i wiersza ("+papier1+" i numer_zlecenia). Probowałem kilka opcji ale program krzyczy że źle:
var query="INSERT INTO magazyn ("+papier2+") VALUES (SELECT SUM("+papier2+") FROM temp) WHERE numer_zlecenia=("+numer+")";
</cite>
Czy nadałeś kolumnom swojej tabeli takie dziwne nazwy jak "+papier1+"? Jeśli tak, to użyj nawiasów kwadratowych, jeśli to tylko jakaś literówka (albo zapatrzenie na jakieś w przykłady na sieci) i faktycznie kolumny w bazie nazywają sie papier1 i numer, to napisz zapytanie nie używając kwadratów. Poza tym zakładając, że chodzi Ci o podsumowanie wszystkich rekordów, to Twoje zapytanie powinno wyglądać mniej więcej tak:
var query="INSERT INTO magazyn (numer_zlecenia, papier1) " & _ "SELECT numer_zlecenia, Sum(papier1) From temp " & _ "Group By numer_zlecenia"
Chyba, że chodzi Ci o jakieś jedne konkretne zlecenie - wówczas dodaj Where. Pozdrawiam Grzegorz
fArmer - 13-11-2006 00:48
Z nazwami jest wszystko ok, np. papier3 jest zmienna która pobiera wartość exportu z trzeciego pola wyboru papieru w formularzu, gdzie w polu można wybrać: "A3 satyna 90g"(export: A3satyna90), "A3 satyna 100g"(export:A3satyna100), itd. Ten rodzaj odwołania działa, to jest sprawdzone. Chciałbym w magazynie wpisać ilość arkuszy danego rodzaju papieru pod danym numerem zlecenia. Odwołanie: var query="UPDATE magazyn SET "+papier1+"='"+arkusze1+"', +papier2+"='"+arkusze2+"', "+papier3+"='"+arkusze3+"', "+papier4+"='"+arkusze4+"',"+papier5+"='"+arkusze5 +"',"+papier6+"='"+arkusze6+"', "+papier7+"='"+arkusze7+"',"+papier8+"='"+arkusze8 +"' WHERE numer_zlecenia= "+numer+" "; działa dopóki któryś z rodzajów papierów się nie powtarza ( jest 8 pól wyboru, jeśli w conajmniej dwóch jest wybrany ten sam papier, to zmienne np. papier1 i papier6 są równe) co oznacza, że w jednym zapytaniu sql jest dwukrotne odwołanie do tej samej kolumny (nazwa kolumny jest taka jak wartość exportu, np. A3satyna120) i wiersza, a to oczywiście powoduje błąd. Pomysł z tymczasową tabelą padł, z formularza i bazy korzysta jednocześnie kilku użytkowników - a to oznacza błędne liczenie papieru. Heh.. i co tu wymyślić?
Grzegorz Danowski - 13-11-2006 00:48
Użytkownik "fArmer" <Bartek.Pasierb@gmail.com> napisał w wiadomości news:1162845149.226846.163330@h54g2000cwb.googlegr oups.com... <cite> Z nazwami jest wszystko ok, np. papier3 jest zmienna która pobiera wartość exportu z trzeciego pola wyboru papieru w formularzu, gdzie w polu można wybrać: "A3 satyna 90g"(export: A3satyna90), "A3 satyna 100g"(export:A3satyna100), itd. </cite>
W takim razie masz koszmarną strukturę tabeli. Spróbuj ją znormalizować, np. do postaci:
Create Table PapieryRodzaje( RodzajId Int Primary Key, RodzajNazwa Varchar(20) )
Create Table Magazyn( ZlecenieNr Int, RodzajId Int References PapieryRodzaje(RodzajId), LiczbaArkuszy Int, Constraint Pk_Magazyn Primary Key (ZlecenieNr, RodzajId) )
Pozdrawiam Grzegorz
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MySQL] Czy da =?ISO-8859-2?Q?si=EA_wykonac_takie_powi=B1z?==?ISO-8859-2?Q?anie_mi=EAdzy_tabelami=2C_i_jak_to_odpyta=E6_? ==?ISO-8859-2?Q?=3F?=
[mysql] przenoszenie danych =?ISO-8859-2?Q?mi=EAdzy_tabelami_?==?ISO-8859-2?Q?w_r=F3=BFnych_bazach?=
Zwracanie wartości, z funkcji, w funkcji [Js, Ajax]
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
Insert do tabeli z danych innej tabeli plus dodatkowa wartośćpola (Firebird)
Przenikanie =?ISO-8859-2?Q?zdj=EAc=2C_slide_show=2C_macrom?==?ISO-8859-2?Q?edia_flash_6?=
Czy duza jest roznica miedzy Corel Draw Graphic Suite X3 ENG Box Upgrade a Corel Draw Graphic Suite 11?
Ms SQL Server 2000 i błąd przy nie wypełnionej wartościo w polusmalldatetime
Jak wyswietlic dane z dwoch tabel gdy dla jednej z nich jest brak jest danej wartosci
[mysql 4.0.24] INSERT do tabeli z automatyczną inkrementacją wartości pola.
zanotowane.pldoc.pisz.plpdf.pisz.pllatwa-kasiora.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|