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


Få ut vilka nummer som inte finns med.

Postades av 2003-02-24 08:18:37 - Benni Svensson, i forum visual basic - allmänt, Tråden har 14 Kommentarer och lästs av 533 personer

Jag försöker att få ut vilka ArrNo som inte är registrerade. ArrNo är i datatypen nvarchar, och det "hoppar mellan registreringarna, dvs nemerna ligger inte i följd.
Jag vill nu få fram vilka ArrNo som inte är registrerade.
Jag försöker så här:
<code>
con.CursorLocation = adUseClient
SQL = "select arrno from t_songtitlar where arrno not like 'c%' order by arrno"
Set rst = con.Execute(SQL)
Do While Not rst.EOF
List1.AddItem rst(0)

rst.MoveNext
Loop

rst.MoveLast
If Not rst.EOF Then
stSista = rst(0)
End If
Form1.Caption = "Det sista ArrNo: " & stSista
Dim i As Integer
rst.MoveFirst

Do While Not rst.EOF
For i = 1 To stSista
If CInt(rst(0)) <> i Then
List2.AddItem i
End If
Next i
rst.MoveNext
Loop
</code>
När jag gämmför If CInt(rst(0)) <> i Then så skriver han in i listan massor med gånger, men ArrNo som är med.
Gör jag så här:
If CInt(rst(0)) = i Then
så skriver han in ArrNo en gång. Hur jag än gör, så lyckas jag inte få fram siffrorna som inte är registrerade, hur skall jag lösa det?




Svara

Sv: Få ut vilka nummer som inte finns med.

Postades av 2003-02-24 13:48:45 - Pelle Johansson

Hej, måste först få korrigera ditt språk - det stavas "jämför".

När det gäller din rutin kan det vara så att även om asp bara har en datatyp - variant så kan det ställa till det. Gardera dig därför att omvandla båda värden till samma typ:

<code>
If CInt(rst(0)) <> cInt(i) Then
</code>


Svara

Sv: Få ut vilka nummer som inte finns med.

Postades av 2003-02-24 14:32:38 - Benni Svensson

Ursäkta stavfelet, tyvärr så tror jag inte att jag är ensam här på forumet som råkat göra det.
Vad får du ASP ifrån? Detta är ju forumet för VB.


Svara

Sv: Få ut vilka nummer som inte finns med.

Postades av 2003-02-24 19:25:25 - Pelle Johansson

Så rätt så, jag är förvirrad. Men även VB har samma sak för sig om du inte deklararar dina variabler först. Har du ingen typdeklaration så är de variant.

Rörande din fråga - löste det sig?


Svara

Sv: Få ut vilka nummer som inte finns med.

Postades av 2003-02-24 20:57:54 - Benni Svensson

Jag missade att visa att jag hade dimmat som long, då borde väl ios skrivas clng((rst(0))?
Nej jag har fortfarande problem, och jag är inte säker på att jag försöker att lösa problemet på rätt sätt.


Svara

Sv: Få ut vilka nummer som inte finns med.

Postades av 2003-02-24 22:47:53 - Benni Svensson

Jag är helt ute och åker, finns det ingen som kan ge mig ett tips i rätt riktning, eller skall jag bara glömma detta?


Svara

Sv: Få ut vilka nummer som inte finns med.

Postades av 2003-02-25 18:01:31 - Andreas Hillqvist

Jag tror detta bör fungera. Anar att du använder SQL server?
<code>
Dim fldArrNo as ADODB.Field
Dim Index as Long
Dim Number as Long
Dim LastNumber as Long
con.CursorLocation = adUseClient
SQL = "SELECT arrno FROM t_songtitlar WHERE arrno NOT LIKE 'c%' ORDER BY CAST(arrno TO Int)"
Set rst = con.Execute(SQL)
Set fldArrNo = rst("ArrNo")
Do Until rst.EOF
List1.AddItem fldArrNo.Value
Number = CLng(fldArrNo.Value) - 1
For Index = LastNumber To Number
List2.AddItem Index
Next
LastNumber = Number + 2
Loop
</code>
Om du inte vill ha med intervallen 0 till första. Skriver du:
<code>
Dim fldArrNo as ADODB.Field
Dim Index as Long
Dim Number as Long
Dim LastNumber as Long
con.CursorLocation = adUseClient
SQL = "SELECT arrno FROM t_songtitlar WHERE arrno NOT LIKE 'c%' ORDER BY CAST(arrno TO Int)"
Set rst = con.Execute(SQL)
If Not rst.EOF Then
Set fldArrNo = rst("ArrNo")
LastNumber = CLng(fldArrNo.Value) - 1
Do Until rst.EOF
List1.AddItem fldArrNo.Value
Number = CLng(fldArrNo.Value) - 1
For Index = LastNumber To Number
List2.AddItem Index
Next
LastNumber = Number + 2
Loop
End If
</code>


Svara

Sv: Få ut vilka nummer som inte finns med.

Postades av 2003-02-25 21:05:34 - Benni Svensson

Hej Andreas.
Ett gott försök men jag får ett Error:

incorrect syntax near the keyword 'TO'
Det är alltså denna del som han inte accepterar:

ORDER BY CAST(ArrNo TO Int)

Vad tror du?


Svara

Sv: Få ut vilka nummer som inte finns med.

Postades av 2003-02-26 19:06:57 - Benni Svensson

Jag får inte Andreas att fungera utan försöker så här:
<code>
Dim stSista As Long
SQL = "select count(1) from T_songtitlar"
Set rst = con.Execute(SQL)
Form1.Caption = "Ansluten till SQL Server. Antal titlar registrerade: " & rst(0)

con.CursorLocation = adUseClient
SQL = "select arrno from t_songtitlar where arrno not like 'c%' order by arrno"
Set rst = con.Execute(SQL)

rst.MoveLast
If Not rst.EOF Then
stSista = rst(0)
End If
Dim i As Long
For i = 1 To stSista
SQL = "select arrno from t_songtitlar where arrno not like 'c%' and CInt(arrno) = " & i & ""
Set rst = con.Execute(SQL)
If rst.EOF Then
List2.AddItem i
End If
Next
Form1.Caption = "Det sista ArrNo: " & stSista

rst.Close
Set rst = Nothing
</code>
Problemet är att detta tydligen inte fungerar i SQL:
and CInt(arrno)
Några förslag?


Svara

Sv: Få ut vilka nummer som inte finns med.

Postades av 2003-02-26 21:44:18 - Andreas Hillqvist

JAg missade at det ska vara As inte To i Cast:

Testa med :
ORDER BY CAST(ArrNo AS Int)


Om du vill tjäna lite prestanda gör du en vy av frågan.


Svara

Sv: Få ut vilka nummer som inte finns med.

Postades av 2003-02-26 22:14:57 - Benni Svensson

Hej Andreas och tack för ditt tålamod.
Jag kom på ett annat problem, som gjorde allt mycket lättare.
Vi har kört in några cover, och kallar de ArrNo för C001 osv. Här var problemet, man can ju inte göra om C till ett tal. Jag ändrade det till 901 och så var den saken löst.

Nu kör jag så här, vad tycker du?
<code>
Dim stSista As Long
SQL = "select count(1) from T_songtitlar"
Set Rst = Con.Execute(SQL)
Form1.Caption = "Ansluten till SQL Server. Antal titlar registrerade: " & Rst(0)

Con.CursorLocation = adUseClient
'jag satte en begränsning på 100, vill till innan jag kommer över det
SQL = "select arrno from t_songtitlar where arrno < 100 order by arrno"
Set Rst = Con.Execute(SQL)
Rst.MoveLast
If Not Rst.EOF Then
stSista = Rst(0)
End If
Dim i As Long
For i = 1 To stSista
'här kör jag en sökning per nummer, kanske detta slöa ner?
SQL = "select arrno from t_songtitlar where arrno = " & i & ""
Set Rst = Con.Execute(SQL)
If Rst.EOF Then
List4.AddItem i
End If
Next
Rst.Close
Set Rst = Nothing
</code>
Detta fungera bra, men tycker du att jag gör prestandaförlust med detta systemet?


Svara

Sv: Få ut vilka nummer som inte finns med.

Postades av 2003-02-26 23:09:23 - Andreas Hillqvist

Den måste ju stäla en fråga för varje tal i intervallen.
Min kod är mer effektiv. Eftersom den kräver bara ett anrop till databasen och en loop.
Jag undrar varför inte du använder den?

JAg har inte kunnat testa den. Så du får antagligen pilla lite med den.

Sedan för står jag inte varför arrno innehöl C och var av nvarChar typ.


Svara

Sv: Få ut vilka nummer som inte finns med.

Postades av 2003-02-27 01:40:55 - Benni Svensson

Jag fick kanonproblem, hela applikationen frös och jag fick ingen som helst rättsida med den.
Att det fanns ett c berode på att jag hade gjort några cover, som jag betecknade med ett c i början. Nu är det ändrat.
Jag har nvarChar typ därför att jag ville ha tresiffrigt(inledande nollor). Jag antar att det är enda sättet att göra det på.

Hittade precis varför den låste sig, och nu fungerar den bra.
Jag skall ändra till din kod.
Tack så mycket för hjälpen.


Svara

Sv: Få ut vilka nummer som inte finns med.

Postades av 2003-02-27 21:38:00 - Andreas Hillqvist

Jag tycker det är dåligt att lagra ett tal som en sträng. Formatera det istället när det ska vissas till tresifrigt.

Jag har för mig nVarchar är ju en variabel läng. Om du bara ska ha tre tecken så kan du ju använda nChar.

Men kör på sträng. om du vil markera den som Cover föreslår jag en attribut.


Svara

Sv: Få ut vilka nummer som inte finns med.

Postades av 2003-02-27 21:48:05 - Benni Svensson

Vad menar du med attribut?
Jag gjorde det enkelt för mig och började en nummerserie på 900 för cover, men attribut och SQL har jag missat tydligen.


Svara

Nyligen

  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe
  • 20:22 Spel
  • 17:07 Snabb och trevlig webbplats utan l
  • 17:00 Bra spelsajt med bonusar
  • 15:51 Slappna av
  • 15:17 Onlineunderhållning på fritiden
  • 11:13 Online Kasino

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 102
27 955
271 725
4 814
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