GRY-Online.pl --> Archiwum Forum

MS Access - problem ze składnią SQL

13.09.2006
17:17
[1]

Cainoor [ Mów mi wuju ]

MS Access - problem ze składnią SQL

:)

13.09.2006
17:32
[2]

Narmo [ Naczelny Maruda ]

Klikasz 2 razy ma makro czy może wybierasz "Projektuj"? :)

13.09.2006
23:40
[3]

Cainoor [ Mów mi wuju ]

Dzięki Narmo.

22.09.2006
10:57
smile
[4]

Cainoor [ Mów mi wuju ]

W czym problem?

szkolenie_id = Me.PracSzkol_szkolenie_id.Value

sql = "INSERT INTO Certyfikaty ( certyfikat_nazwa, certyfikat_opis, certyfikat_organizator_id )" & _
"SELECT [Szkolenia].[szkolenie_nazwa], [Szkolenia].[szkolenie_opis], [Szkolenia].[szkolenie_organizator_id]" & _
"FROM Szkolenia" & _
"WHERE [Szkolenia].[szkolenie_id]='" & szkolenie_id & "';"

DoCmd.RunSQL sql

Runtime error 3131
Błąd składniowy w klauzuli FROM

22.09.2006
11:00
[5]

Azzie [ bonobo ]

Nie znam sie na Accesie ale od kiedy w skladni SQL stosuje sie &?

22.09.2006
11:00
[6]

Grzesiek [ - ! F a f i k ! - ]

Cainoor ---> nie bardzo rozumiem, co chcesz zrobić.
Jak jest INSERT INTO musi też być VALUES


Edit:
Azzie ---> pewnie to wrzuca w C# albo VB, a & to po prostu łącznik z linijką niżej, żeby wizualnie było ładniej :-)

22.09.2006
11:00
[7]

Cainoor [ Mów mi wuju ]

Azzie to jest VBA do Accessa i tak sie przenosi linie.

Grzesiek ---> To VALUES to są wartości kolumn wiersza z innej tabeli. Stad ten SELECT.

22.09.2006
11:01
[8]

Azzie [ bonobo ]

Aha to sorry :)

22.09.2006
11:02
[9]

Grzesiek [ - ! F a f i k ! - ]

Wygląda na początku, że chcesz coś wstawić w tabele Certyfikaty, ale nie piszesz jakie wartości, później nagle do SELECTa przechodzisz ...

22.09.2006
11:03
[10]

ElNinho [ Konsul ]

Grzesiek - oczywiscie ze nie musi byc VALUES

tzw insert z selecta

22.09.2006
11:03
[11]

Grzesiek [ - ! F a f i k ! - ]

Spróbuj tak może ...

sql = "INSERT INTO Certyfikaty ( certyfikat_nazwa, certyfikat_opis, certyfikat_organizator_id )" & _
"VALUES (SELECT [Szkolenia].[szkolenie_nazwa], [Szkolenia].[szkolenie_opis], [Szkolenia].[szkolenie_organizator_id]" & _
"FROM Szkolenia" & _
"WHERE [Szkolenia].[szkolenie_id]='" & szkolenie_id & )"';"

Hmmm insert z selecta ? Zaraz sprawdzę.

22.09.2006
11:04
[12]

ElNinho [ Konsul ]

Cainoor - sprobu wziac selecta wewnetrzengo w nawiasy tzn

insert into certyfikaty (..) (select ....)


Grzesiek:
przeciez to z values sie nie wykona w takiej postaci

22.09.2006
11:05
[13]

Cainoor [ Mów mi wuju ]

Grzesiek ---> VALUES tutaj nie ma nic do rzeczy. To jest INSERT z SELECTA ( )

ElNinho ---> Zaraz spróbuje.

22.09.2006
11:06
[14]

Grzesiek [ - ! F a f i k ! - ]

sql = "INSERT Certyfikaty (certyfikat_nazwa, certyfikat_opis, certyfikat_organizator_id)
SELECT [Szkolenia].[szkolenie_nazwa], [Szkolenia].[szkolenie_opis], [Szkolenia].[szkolenie_organizator_id]
FROM Szkolenia
WHERE State = [Szkolenia].[szkolenie_id]='" & szkolenie_id &"';"

Wszystko spróbuj w jednej linijce.


Tutaj pomocy poszukaj też :

22.09.2006
11:16
[15]

ElNinho [ Konsul ]

Cainoor - nie trzymaj w niepewnosci - dziala ? :)

22.09.2006
11:22
[16]

Cainoor [ Mów mi wuju ]

Niestety nie działa. Jest to samo. Zrobiłem to w taki sposób.

sql = "INSERT INTO Certyfikaty ( certyfikat_nazwa, certyfikat_opis, certyfikat_organizator_id )" & _
"(SELECT [Szkolenia].[szkolenie_nazwa], [Szkolenia].[szkolenie_opis], [Szkolenia].[szkolenie_organizator_id]" & _
"FROM Szkolenia" & _
"WHERE [Szkolenia].[szkolenie_id]='" & szkol_id & "');"

22.09.2006
11:23
[17]

ElNinho [ Konsul ]

mam pytanko - a dlaczego kolumny w selekcie sa w nawiasach [] ? to jest jakas skladnia Accesa ?

22.09.2006
11:26
[18]

Cainoor [ Mów mi wuju ]

Jest to kod przekopiowany prosto z kwerendy (querry). Ten nawias [] jest potrzebny, gdy w nazwie tabeli jest odstęp (np. Szkol Enia). Tutaj wstawiony z automatu i tak naprawdę nie powinien niczemu bruździć.

22.09.2006
11:27
smile
[19]

legrooch [ MPO Squad Member ]

Cainoor ==> To jest żywcem skopiowanie?

22.09.2006
11:27
[20]

legrooch [ MPO Squad Member ]

sql = "INSERT INTO Certyfikaty ( certyfikat_nazwa, certyfikat_opis, certyfikat_organizator_id ) " & _
"(SELECT [Szkolenia].[szkolenie_nazwa], [Szkolenia].[szkolenie_opis], [Szkolenia].[szkolenie_organizator_id] " & _
"FROM Szkolenia " & _
"WHERE [Szkolenia].[szkolenie_id]='" & szkol_id & "');"

22.09.2006
11:28
[21]

Cainoor [ Mów mi wuju ]

legrooch

Prawie żywcem, z moją modyfikacją jeśli chodzi o przeniesienie do innej lini (dodałem "" i & _)

Ok, zaraz sprawdze.

22.09.2006
11:44
[22]

diuk [ Generaďż˝ ]

cainoor --> w SQL z posta 16 nie ma spacji pomiędzy "Szkolenia" i "WHERE" (przy łamaniu linii TRZEBA pamiętać o spacjach).

22.09.2006
11:45
smile
[23]

legrooch [ MPO Squad Member ]

sql = "INSERT INTO Certyfikaty ( certyfikat_nazwa, certyfikat_opis, certyfikat_organizator_id ) " & _
"(SELECT [Szkolenia].[szkolenie_nazwa], [Szkolenia].[szkolenie_opis], [Szkolenia].[szkolenie_organizator_id] " & _
"FROM Szkolenia " & _
"WHERE [Szkolenia].[szkolenie_id]=" & szkol_id & ");"

:PPPP
Działa :PPP

22.09.2006
11:46
smile
[24]

Cainoor [ Mów mi wuju ]

Dzięki wszystkim za pomoc. Rzeczywiście błąd był w samej składni... Chodziło o te małe ' ' przy parametrze.

"WHERE [Szkolenia].[szkolenie_id]=" & szkol_id & ";"

i działa.

22.09.2006
11:51
[25]

ElNinho [ Konsul ]

no to teraz impra stary :)

22.09.2006
11:57
smile
[26]

Cainoor [ Mów mi wuju ]

Taa... do 17 normalnie chyba z pięć imprez urządze :P

22.09.2006
12:50
smile
[27]

Cainoor [ Mów mi wuju ]

Czy to w ogóle możliwe?

INSERT INTO tabA (col1, col2, col3) (SELECT col1 FROM tabB WHERE cos=cos) AND VALUES (val1, val2)

22.09.2006
12:58
[28]

diuk [ Generaďż˝ ]

Cainoor -->

INSERT INTO tabA (col1,col2,col3) SELECT col1,val1 as col2,val2 as col3 FROM tabB WHERE ....

22.09.2006
13:04
[29]

legrooch [ MPO Squad Member ]

Nie.

INSERT INTO tabA (col1, col2, col3) (SELECT col1 FROM tabB WHERE cos=cos, val1, val2)

22.09.2006
13:06
[30]

Cainoor [ Mów mi wuju ]

Dzięki.

22.09.2006
13:24
[31]

diuk [ Generaďż˝ ]

legrooch -->

Podane przez Ciebie rozwiązanie wygląda na niepoprawne...

22.09.2006
13:40
[32]

legrooch [ MPO Squad Member ]

diuk ==> Ten element (SELECT col1 FROM tabB WHERE cos=cos, val1, val2) to jest przenośnia deweloperska.

Chodzi o wynik, który po wykonaniu selecta da (1, 2, 3)

22.09.2006
13:48
smile
[33]

Cainoor [ Mów mi wuju ]

Zrobiłem tak jak diuk i jest dobrze.

22.09.2006
13:53
[34]

diuk [ Generaďż˝ ]

legrooch -->

SQL nie dopuszcza takiej składni (gdziekolwiek by tego nie wykorzystać):
SELECT pole FROM Tabela, Stała1
poprawna natomiast jest:
SELECT pole, Stała1 FROM Tabela
To, co ma zwrócić zapytanie, MUSI być pomiędzy SELECT a FROM

SELECT pola FROM Tabela1,Tabela2 jest skrótowym zapisem tłustego (każdy z każdym) JOINa

© 2000-2025 GRY-OnLine S.A.