Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


DAO: värde och position i databas

Postades av 2006-08-23 10:23:37 - Robin Lövgren, i forum vb.net, Tråden har 7 Kommentarer och lästs av 858 personer

Jag har den senaste tiden försökt att ta fram maxvärdet för en kolumn i en databas. Men när jag sedan vill ha fram positionen för detta värde blir det krångel. Här är koden:

Public Sub Max()
str1 = "SELECT max(Bin1Amptd) FROM RasterScan WHERE ((Rinc BETWEEN " & (Val(frmMax.txtLowRinc.Text) + 20) / 0.1 & " AND " & (Val(frmMax.txtHighRinc.Text) + 20) / 0.1 & ") AND Scan = " & frmMax.cmbSnitt.SelectedIndex & ") ;"

Db = DAODBEngine.OpenDatabase(frmMax.txtPath.Text)
rsDb = Db.OpenRecordset(str1)
frmMax.txtMax.Text = rsDb.Fields(0).Value
rsDb.Close()
str2 = "SELECT max(Record) FROM RasterScan WHERE (Bin2Amptd BETWEEN " & Val(frmMax.txtMax.Text) & " AND " & Val(frmMax.txtMax.Text) & "); "
rsDb = Db.OpenRecordset(str2)
frmMax.txtPos.Text = rsDb.Fields(0).Value
rsDb.Close()
End Sub

Det är när den tredje raden nedifrån i kodsnutten ovan körs, som följande meddelande kommer upp: Conversion from type 'DBNull' to type 'String' is not valid.
Är det sql uttrycket för str2 som behöver ändras, eller nåt helt annat?

mvh Robin Lövgren


Svara

Sv: DAO: värde och position i databas

Postades av 2006-08-23 10:35:28 - Marcus Gus

<b>Är det sql uttrycket för str2 som behöver ändras, eller nåt helt annat?</b>


Antagligen eftersom det returnerar Null istället för en giltig sträng. Är det så att du skall returnera null från din fråga måste du ta hand om det innan du tilldelar din textbox(antar att txtpos är det).


Svara

Sv:DAO: värde och position i databas

Postades av 2006-08-23 10:50:59 - Robin Lövgren

Ok. Är inte så hemma på det här med sql. Tanken var att jag ville leverera ett värde med hjälp av frågan. Och när det kommer en dbnull tolkade jag det som att ingenting skickades. Så hur ska jag få den att leverera värdet från textboxen i fråga?


Svara

Sv: DAO: värde och position i databas

Postades av 2006-08-23 11:52:58 - Robin Lövgren

Jag löste felet jag hade men fick ett annat direkt. Det var fel på den här raden:

str2 = "SELECT max(Record) FROM RasterScan WHERE (Bin2Amptd BETWEEN " & Val(frmMax.txtMax.Text) & " AND " & Val(frmMax.txtMax.Text) & "); "

Det ska ju inte stå max(Record) eftersom Record är positionen för värdet, utan bara Record.
Men nu när det är fixat får jag fel på samma rad som tidigare men detta felmeddelandet istället:

Aktuell post saknas.

Men jag förstår inte hur den kan saknas. Eftersom maxvärdet från posten redan är framtaget så
existerar den ju uppenbarligen! Någon som vet vad detta beror på?

/Robin


Svara

Sv:DAO: värde och position i databas

Postades av 2006-08-23 14:56:39 - Marcus Gus

Skriv ut mer av din kod och vad du vill uppnå egentligen så blir det lättare att ge förslag på vad det kan vara, tex vad är rsDb? Den är inte deklarerad i funktionen...

Ta dessutom en nogranare titt på den sqlsats du får, kör debuggern och lägg ut SQL'en du får här.

Ta en titt på detta som du har

<code>
BETWEEN " & Val(frmMax.txtMax.Text) & " AND " & Val(frmMax.txtMax.Text) & "); "
</code>

om texten i txtMax är "1" så kommer din sql att bli
<code>
BETWEEN 1 AND 1
</code>
Dvs, det enda du kommer att få som svar är det som är exakt 1.

Kan det vara det som gör att du får null som svar, att du fösöker titta på värdena mellan 1 och 1 och eftersom det inte finns någon post med värdet 1 så får du null?






Svara

Sv: DAO: värde och position i databas

Postades av 2006-08-23 15:37:29 - Robin Lövgren

Ok, jag ska försöka ge en tydligare bild av det hela. Så här ser koden ut nu:

Dim DAODBEngine As New DAO.DBEngine

Dim Db As DAO.Database
Dim rsDb As DAO.Recordset

Dim str1 As String //För lagring av sql uttryck
Dim str2 As String //För lagring av sql uttryck
Dim i As Integer


Public Sub Max()
str1 = "SELECT max(Bin3Amptd) FROM RasterScan WHERE ((Rinc BETWEEN " & (Val(frmMax.txtLowRinc.Text) + 20) / 0.1 & " and " & (Val(frmMax.txtHighRinc.Text) + 20) / 0.1 & ") AND Scan = " & frmMax.cmbSnitt.SelectedIndex & ") ;"

Db = DAODBEngine.OpenDatabase(frmMax.txtPath.Text)

//Maxvärde tas fram:
rsDb = Db.OpenRecordset(str1)
frmMax.txtMax.Text = rsDb.Fields(0).Value
i = rsDb.Fields(0).Value
rsDb.Close()

//Positionen för maxvärdet tas fram
str2 = "SELECT Record FROM RasterScan WHERE Bin3Amptd=" & i & "; "
rsDb = Db.OpenRecordset(str2)
frmMax.txtPos.Text = rsDb.Fields(0).Value //HÄR BLIR DET FEL: "Aktuell post saknas"
rsDb.Close()
End Sub

Att jag fick null berodde på att jag hade "max(Record)" istället för "Record" på 5:e raden nedifrån, som orsakade fel i 3:e raden nedifrån.
Record innehåller ju positionen för värdet som tas fram(Radnumret), så där ska det absolut inte finnas något max involverat i uttrycket. Ändrade även på BETWEEN och satte dit ett = tecken istället, även om det inte var det här som null meddelandet berodde på.
Efter att jag löst detta problem kom det direkt ett nytt fel på 3:e raden nedifrån:

"Aktuell post saknas"

Detta har jag ännu inte lyckats lösa. Jag tycker ju att posten borde finnas eftersom maxvärdet för just den posten tas fram utan problem några rader högre upp i koden. Så varför kommer då detta meddelande upp när jag försöker ta fram Record (positionen) för denna post?
Hoppas det var lite tydligare =)

/Robin


Svara

Sv:DAO: värde och position i databas

Postades av 2006-08-24 16:07:20 - Robin Lövgren

Löste problemet själv. Variabeln i var ju en integer, och det var decimala tal jag utvärderade. Därför stod det att posten saknades. Ändrade den till en decimal istället, och då funkade det utmärkt.


Svara

Sv:DAO: värde och position i databas

Postades av 2006-08-24 16:20:08 - Martin Adrian

Varför inte

SELECT Record, Bin3Amptd
FROM RasterScan
WHERE Bin3Amptd = (SELECT Max(Bin3Amptd) FROM RasterScan WHERE Rinc BETWEEN ...)


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 725
27 958
271 751
505
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies