Terve taas kaikille pitkästä aikaa. Pieni muotoisia ongelmia taasen.
Johdanto: Olen tehnyt raportin, johon tulostuu päivämäärät. Tavoitteena olisi saada tehtyä siihen hakukentät. Eli kirjoitetaan asiakasnumero, alkupvm ja loppupvm, tämän seurauksena tulostetaan asiakasnumero ja kaikki päivämäärät annettujen ehtojen mukaan. Käytän vb 2008:a ja query builderiin oon kyselyä tehnyt.
Ongelma: Saan hienosti haettua asiakasnumerolla ja alkupvm:llä, mutta kun yritän laittaa vielä tuon loppupvm:n siihen niin johan tulee ongelma jota oon yrittänyt nyt selvittää.
Tämä toimii: haku asiaksnumerolla ja alkupvm:llä ->
SELECT asiakasnumero, pvm, klo FROM asiakas where asiakasnumero =@asnro and pvm =@alkupvm
Miten saan ympättyä tuohon lauseeseen between komennon, että se hakee päivämäärien väliltä? olen yrittänyt mm. tälläistä:
SELECT asiakasnumero, pvm, klo FROM asiakas where asiakasnumero =@asnro and pvm BETWEEN =@alkupvm & =@loppupvm
vaikka pyöritän miten päin lauseketta, lisään hipsuja, heittomerkkejä, poistan niitä, kokeilen eripaikkoihin niin aina tulee ilmoitus että:
Syntaksivirhe (puuttuva operaattori) kyselylausekkeessa "asiakasnumero =@asiakasnumero and Pvm between =@alkupvm & =@loppupvm"
kiitoksia jo tässä vaiheessa!
t:mikko
Ei mitään havaintoa tuosta VB 2008 Query:stä, mutta vastaan silti.
mmikko kirjoitti:
SELECT asiakasnumero, pvm, klo FROM asiakas where asiakasnumero =@asnro and pvm BETWEEN =@alkupvm & =@loppupvm
BETWEEN x & y ??
Yleensä se on: BETWEEN x AND y
Eli mitä jos laitat:
SELECT asiakasnumero, pvm, klo FROM asiakas where asiakasnumero =@asnro and pvm BETWEEN =@alkupvm AND =@loppupvm
Moro Grez!
Ei ihan toiminu tuolla sun ehdotuksella mutta siitä oli paljon apua! alla olevalla toimii.
WHERE asiakasnumero = ‘asnro’ AND Pvm BETWEEN (‘alku’) AND (’loppu’)
En todellakaan ymmärrä miksi nuita "hipsuja" sanojen asnro, alku ja loppu ympärillä ja ku ne on vielä erilaisia....osaako joku kertoa niistä tarkemmin. Nimittäin jos muutan niitä, vaikka tuon loppu sanan kohdalla samanlaiseksi mitkä on alku sanan ympärillä niin ei enää toimi....
t:mikko
mmikko kirjoitti:
Moro Grez!
Ei ihan toiminu tuolla sun ehdotuksella mutta siitä oli paljon apua! alla olevalla toimii.
WHERE asiakasnumero = ‘asnro’ AND Pvm BETWEEN (‘alku’) AND (’loppu’)
En todellakaan ymmärrä miksi nuita "hipsuja" sanojen asnro, alku ja loppu ympärillä ja ku ne on vielä erilaisia....osaako joku kertoa niistä tarkemmin. Nimittäin jos muutan niitä, vaikka tuon loppu sanan kohdalla samanlaiseksi mitkä on alku sanan ympärillä niin ei enää toimi....
t:mikko
ei toimikkaan niin kuin pitäis.... =(
lainaus:
ei toimikkaan niin kuin pitäis.... =(
hakee, mut hakee mitä sattuu...
Moro mmikko!
Ekaks: unohda tässä kohtaa se query builder
jos tietokantasi on SQL Server'llä niin oheinen viritelmä toimii...
'... Dim asnro As String = txtAsnro.Text Dim pvm1 As DateTime = _ DateTime.Parse(txtAlkuPvm.Text.ToString) Dim alku As String = _ pvm1.ToString("yyyy.MM.dd HH:mm:ss.fff") If txtLoppuPvm.Text = String.Empty Then txtLoppuPvm.Text = txtAlkuPvm.Text End If Dim pvm2 As DateTime = _ DateTime.Parse(txtLoppuPvm.Text.ToString + " 23:59:59") Dim loppu As String = _ pvm2.ToString("yyyy.MM.dd hh:mm:ss.fff") Dim kysely As String = "SELECT asiakasnumero, pvm, klo " _ + "FROM asiakas where asiakasnumero = '" + asnro + "'" + _ " And pvm Between '" + alku + "' And '" + loppu + "'" ' (jos asiakasnumero ei ole kannassa textinä ' poista hipsu muutujan asnro edestä/perästä) '...
ja vielä erikseen: toimiva viritelmä MS Access kannalle...
'... Dim asnro As String = txtAsnro.Text Dim dateSplit() As String = _ txtAlkuPvm.Text.Split(".") Dim alku As String = "#" + dateSplit(1) + _ "/" + dateSplit(0) + "/" + dateSplit(2) + "#" Erase dateSplit If txtLoppuPvm.Text = String.Empty Then txtLoppuPvm.Text = txtAlkuPvm.Text End If dateSplit = txtLoppuPvm.Text.Split(".") Dim loppu As String = "#" + dateSplit(1) + _ "/" + dateSplit(0) + "/" + dateSplit(2) + "#" Dim kysely As String = "SELECT asiakasnumero, pvm, klo " _ + "FROM asiakas where asiakasnumero = '" + asnro + "'" + _ " And pvm >= " + alku + " AND pvm <= " + loppu ' (jos asiakasnumero ei ole kannassa textinä ' poista hipsu muutujan asnro edestä/perästä) dateSplit = Nothing '...
Kiitos nyt toimii ainakin toistaseksi!
Olisko vielä kenelläkään tietoa semmosta asiasta kun:
tietokanssa on tuo pvm-kenttä muodossa Pvm./klo ja muotoa Lyhyt pvm. Tietokannassa ei näy muuta kuin päivämäärä, mutta kun raportti luodaan niin tulee pvm ja sitten vielä kellonaika siihen perään eli: 11.8.2009 0:00:00. Saako tuota 0:00:00 pois mitenkään? raportista löysin pvm-kentän asetuksista kohdan format ja sieltä saa asetuksen jossa kentän arvo on 11.8.2009, mutta kun rapsua ajaa niin aina ilmestyy toi 0:00:00.
t:mikko
Moikka taas mmikko!
kokeile...
pvm-kentän Format-asetukseksi: d tai "d"
& klo-kentän Format-asetukseksi: t tai "t"
' (esim. Formaatin asetus koodista DataGridView-kontrollissa) '... For Each dgvColumn As DataGridViewTextBoxColumn _ In Me.dataGridView1.Columns With dgvColumn If .Name = "pvm" Or .Name = "klo" Then .DefaultCellStyle.Alignment = _ DataGridViewContentAlignment.MiddleRight Select Case .Name Case "pvm" .DefaultCellStyle.Format = "d" Case "klo" .DefaultCellStyle.Format = "t" End Select End If End With Next '...
Hei nea!
mä kokeilen tuota, ku pääsen duunista kotia!
Kiitos taas tuhannesti ku autoit! :)
t: mikko
Aihe on jo aika vanha, joten et voi enää vastata siihen.