Answer-ID
  • Întrebări
  • Tag-uri
  • Categorii
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 N8g
N8g

Utilizarea parametrilor din serviciile de raportare MS (SQL Server 2008) împotriva unei surse de date ODBC

Am scris un raport în Visual Studio care ia un parametru de intrare utilizator și rulează împotriva unei surse de date ODBC. Aș dori să scriu manual interogarea și să aibă servicii de raportare să înlocuiască o parte din clauza cu valoarea parametrului înainte de a le trimite în baza de date. Ceea ce pare să se întâmple este faptul că @parmName pe care le presupun că va fi înlocuit este de fapt trimis ca parte a instrucțiunii SQL. Am pierdut o configurație undeva sau este pur și simplu imposibil?

Nu folosesc opțiunea de filtrare din instrument deoarece aceasta pare să aducă înapoi întregul set de date din baza de date și să facă filtrarea pe serverul SQL.

1 2008-08-12T21:47:45+00:00 4
Programare
visual-studio
sql-server
odbc
sql-server-2008
reporting-services
Comentarii la întrebare (0)
Jorriss
13 august 2008 в 3:43
2008-08-13T03:43:15+00:00
Mai mult
Sursă
Editează
#9325

Se pare că va trebui să tratezi declarația SQL ca o expresie. De exemplu:

="Select col1, col2 from table 1 Where col3 = " & Parameters!Param1.Value 

În cazul în care clauza unde este un șir, va trebui să faceți următoarele:

="Select col1, col2 from table 1 Where col3 = '" & Parameters!Param1.Value & "'"

Important: Nu folosiți linii de rupere în expresia SQL. Dacă faci, vei primi o eroare.

Holla înapoi dacă ai nevoie de mai multă asistență.

0
0
Comentarii (0)
Matt Hamilton
21 august 2008 в 2:44
2008-08-21T14:44:08+00:00
Mai mult
Sursă
Editează
#19600

ODBC nu utilizează vechiul "?" sintaxa pentru parametrii? Incearca asta:

select col1, col2 from table1 where col3 = ?

Ordinea parametrilor dvs. devine importantă atunci, dar este mai puțin vulnerabilă la injecția SQL decât simpla adăugare a valorii parametrului.

0
0
Comentarii (0)
stjohnroe
26 august 2008 в 8:46
2008-08-26T20:46:47+00:00
Mai mult
Sursă
Editează
#28572

Sunt puțin confuz în legătură cu această întrebare, dacă căutați o utilizare simplă a parametrilor, atunci notația este: * paramName * , totuși dacă doriți să schimbați structura clauzei WHERE (așa cum ați putea folosi în sql + folosind?), atunci ar trebui să utilizați într-adevăr un cod personalizat în cadrul raportului pentru a defini o funcție care returnează sql-ul cerut pentru interogare.

Din păcate, atunci când se utilizează codul personalizat, parametrii nu pot fi menționați direct în interogarea generată, ci trebuie să aibă valori concatenate în Stringul rezultat, introducând astfel potențialul pentru injectarea SQL .

0
0
Comentarii (0)
H.G.
11 mai 2012 в 4:49
2012-05-11T16:49:18+00:00
Mai mult
Sursă
Editează
#10551669

A întâmpinat aceeași problemă încercând să interoghez o bază de date de acces prin ODBC.

Interogarea mea inițială: SELECT A.1 DE LA UN CU WHERE A.1 = @parametru a provocat eroare. Modificat la: SELECT A.1 DE LA UN A WHERE A.1 =? .

Apoi, trebuie să măriți parametrul interogării cu parametrul dvs. de raport.

0
0
Comentarii (0)
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
ID
KO
RU
© Answer-ID 2021
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire