Avatar billede brian-johansen Nybegynder
19. august 2005 - 16:11 Der er 22 kommentarer og
1 løsning

Select sætninger virker ikke ordentlig

Hej,

Jeg har et problem med min select sætning. Jeg ved at lave en webkalender, hvor man skal kunne vælge at se kalendere for forskelige mennesker.

Jeg har lavet flg. sætning:
OleDbParameter param = new OleDbParameter();
param.ParameterName = "@brugerid";
param.Value = personId;
string strSQL = "Select dato,tid,kampange,emne,Kalendertekst,sted,brugerid From event Where dato=#"+date+"# AND brugerid = '@brugerid'";

Det skal siges at personId er en string der kommer fra en dropdownbox.

Er der nogen kan se hvad fejlen

mvh Brian
Avatar billede nielle Nybegynder
19. august 2005 - 16:13 #1
Hvad er det den gør galt?
Avatar billede softspot Forsker
19. august 2005 - 16:17 #2
Har du stavet felterne rigtigt ifht. tabellen (f.eks. ser "kampange" forkert ud, det burde være "kampagne" - under den antagelse at du har lavet en tastefejl i dit select... :))?
Avatar billede arne_v Ekspert
19. august 2005 - 16:20 #3
hvorfor bruger du ikke parameter for date ?

det er da en oplagt kandifate til dato format problemer
Avatar billede brian-johansen Nybegynder
19. august 2005 - 16:22 #4
Nej den virker fint, når jeg fjerner AND brugerid = '@brugerid'";

Det er meningen at når jeg trykker på en dato så skal den vise dagens indhold for en person i et datagrid, og det gør den ikke.

MEN jeg kan sagtens se alle aftaler for alle personerne hvis jeg fjerner: AND brugerid = '@brugerid'";
Avatar billede brian-johansen Nybegynder
19. august 2005 - 16:28 #5
fordi, jeg først lige har fundet ud af det med parameter, men det regner jeg også med at lave om senere.

Men umiddelbart er det ikke noget problem så det venter jeg med
Avatar billede arne_v Ekspert
19. august 2005 - 16:29 #6
får du added den parameter til den command du laver udfra SQL streng ?
Avatar billede brian-johansen Nybegynder
19. august 2005 - 16:31 #7
huha... det tror jeg ikke, jeg har ikke lavet andet med parameter end det der står øverst
Avatar billede nielle Nybegynder
19. august 2005 - 16:33 #8
Når du bruger parametre er der ingen grund til at have '-tegn rundt om noget som skal være tekst. Det skal automatikken ordne for dig.

Er brugerid i øvrigt overhoved defineret som en tekst-type i selve databasen?

Endeligt så kan jeg ikke se at du i din kode angiver hvilken type din parameter er.
Avatar billede arne_v Ekspert
19. august 2005 - 16:33 #9
du skal:

dinkommando.Parameters.Add(param);
Avatar billede brian-johansen Nybegynder
19. august 2005 - 16:35 #10
øh... hvilke kommando? jeg er lidt sløv på det her område :-D
Avatar billede arne_v Ekspert
19. august 2005 - 16:36 #11
den kommando som du laver udfra din SQL streng og din connection
Avatar billede brian-johansen Nybegynder
19. august 2005 - 16:43 #12
Det ændre ikke noget, jeg har skrevet følgende, ser det helt forkert ud.

OleDbCommand cmd = new OleDbCommand();
           
OleDbParameter param = new OleDbParameter();
param.ParameterName = "@brugerid";
param.Value = personId;
cmd.Parameters.Add(param);
string strSQL = "Select dato,tid,kampange,emne,Kalendertekst,sted,brugerid From event Where dato=#"+date+"# AND brugerid = '@brugerid'";
Avatar billede arne_v Ekspert
19. august 2005 - 16:56 #13
du skal også have tilknyttet en connection til din command

og hvor kalder du ExecuteNonQuery ?
Avatar billede brian-johansen Nybegynder
19. august 2005 - 17:02 #14
Den kalder jeg ikke, det har der ikke være behov for tidligere.

Her er hele min Connection.

DateTime datoTmp = DateTime.Parse(Calendar1.SelectedDate.ToShortDateString());
string personId = dstaff.SelectedItem.Text.ToString();
string date = datoTmp.ToString("MM-dd-yyyy");
string strDSN=@"Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=";
strDSN+=Server.MapPath("data\\kalender.mdb");
OleDbConnection myConn2 = new OleDbConnection(strDSN);

OleDbCommand cmd = new OleDbCommand();
OleDbParameter param = new OleDbParameter();
param.ParameterName = "@brugerid";
param.Value = personId;
cmd.Parameters.Add(param);
string strSQL = "Select dato,tid,kampange,emne,Kalendertekst,sted,brugerid From event Where dato=#"+date+"# AND brugerid = '@brugerid'";
OleDbDataAdapter myCmd = new OleDbDataAdapter(strSQL, myConn);
myConn2.Open();
DataSet dsDate = new DataSet();
myCmd.Fill(dsDate,"event");

Men jeg har slet ikke haft behov for det, og jeg kan ikke forstå hvorfor det skal volde så store problemer med en ekstra betingelse?

mvh
Avatar billede arne_v Ekspert
19. august 2005 - 17:06 #15
nå - det er en data adapter og ikke en data reader

jeg må tilstå at jeg ikke ved om man kan bruge parameters med sådan en
Avatar billede brian-johansen Nybegynder
19. august 2005 - 17:09 #16
okay... men hvordan får jeg så en string ind i et sql statment ?

Jeg har prøvet med '+brugerid+' , 'brugerid' og forskellige andre og enten virker det ikke eller også siger den at jeg mangler forskellige parameter. Hvordan mener du at man skal have den ind ?

mvh Brian
Avatar billede arne_v Ekspert
19. august 2005 - 17:11 #17
string strSQL = "Select dato,tid,kampange,emne,Kalendertekst,sted,brugerid From event Where dato=#"+date+"# AND brugerid = " + personID;

eller

string strSQL = "Select dato,tid,kampange,emne,Kalendertekst,sted,brugerid From event Where dato=#"+date+"# AND brugerid = '" + personID + "'";
Avatar billede arne_v Ekspert
19. august 2005 - 17:12 #18
alt efter om brugerid feltet er tal eller tekst
Avatar billede brian-johansen Nybegynder
19. august 2005 - 17:13 #19
tekst

det er en string der hedder personID
Avatar billede brian-johansen Nybegynder
19. august 2005 - 17:18 #20
Det virker SUPER - Mange tak for hjælpen !!
Avatar billede brian-johansen Nybegynder
19. august 2005 - 17:22 #21
smider du lige et svar ?
Avatar billede arne_v Ekspert
19. august 2005 - 17:25 #22
mig ?
Avatar billede brian-johansen Nybegynder
19. august 2005 - 17:28 #23
Ja dig :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester