Avatar billede tre Nybegynder
21. maj 2003 - 08:56 Der er 15 kommentarer og
1 løsning

Konvertere tekst til tal

Hej Eksperter,

jeg har en Access database der i en kolonne nogle steder indeholder tal andre steder tekst.
Derfor er egenskaben for denne kolonne sat til Tekst.

Det handler om postnummer!

Databasen indeholder adresser fra hele verden og nogle steder er der også bogstaver i postnummeret.

Men hvis jeg laver en afgrænsning på land til at være tyskland er der kun tal i kolonnen, og jeg vil nu gerne kunne udfiltrere fra f.eks. 25000 - 72000

Jeg bruger BETWEEN i min SQL sætning, men kom i tanke om at den nok har svært ved at tjekke dette i en tekst streng.

Kan man på nogen måde konvertere tekststrengen til Integer så jeg kan lave den ønskede filtrering?

Vel at mærke uden at ændre databasekolonnen til tal, da den jo af og til også indeholder tekst.


Håber nogen ved hvordan dette gøres
Avatar billede venne Nybegynder
21. maj 2003 - 09:09 #1
Jeg tror ikke der er problemer med BETWEEN på tekstkolonner, hvis værdierne er formateret på samme måde (fx 5 cifre, ingen blanke osv.). Har du konstateret et problem med det?

Men ellers må det kunne gøres noget i retning af:

...WHERE CLng(Postnummer) BETWEEN 25000 AND 72000
Avatar billede medions Nybegynder
21. maj 2003 - 09:16 #2
CInt("tad12")

//>Rune
Avatar billede tre Nybegynder
21. maj 2003 - 09:31 #3
De er nemlig formateret på samme måde.

Har lige prøvet med CLng, men den viser bare alligevel alt indholdet!

Har også prøvet med CInt - hvilket heller ikke hjælper.


Min SQL ser sådan ud, hvis det hjælper:

SQL = "SELECT country.*, customer.* FROM customer" &_
"LEFT JOIN country ON country.CountryID = customer.Country" &_
"WHERE customer.Country = '" & strCountry & "'" &_
"CLng(customer.Zip) BETWEEN " & strZipFrom & " AND " & strZipTo &_
"(customer.CatID1 OR customer.CatID2 OR customer.CatID3) = '" & strCategory & "'" &_
"ORDER BY country.CountryName, customer.Name"
Avatar billede venne Nybegynder
21. maj 2003 - 09:40 #4
Det ser skummelt ud - der mangler nogle 'AND' i WHERE-delen, mellem de forskellige kriterier.

Og den med
  (customer.CatID1 OR customer.CatID2 OR customer.CatID3) = x
duer ikke, du er nødt til at lave
  (customer.CatID1 = x OR customer.CatID2 = x OR customer.CatID3 = x)
Avatar billede tre Nybegynder
21. maj 2003 - 10:44 #5
Hehe - jeg får tit at vide mine koder ser skumle ud :-)

Nu har jeg prøvet at rette den til, men lige lidt hjælper det... :-(

Jeg er helt i vildrede, så jeg prøver jo bare en masse underlige ting...

SQL = "SELECT country.*, customer.* FROM customer " &_
    "LEFT JOIN country ON country.CountryID = customer.Country " &_
    "WHERE customer.Country = '" & strCountry & "' AND " &_
    "customer.Zip BETWEEN CLng(" & intZipFrom & ") AND CLng(" & intZipTo & ") AND "&_
    "(customer.CatID1 = '" & strCategory & "' OR customer.CatID2 = '" & strCategory & "' OR customer.CatID3) = '" & strCategory & "' " &_
    "ORDER BY country.CountryName, customer.Name"
Avatar billede tre Nybegynder
21. maj 2003 - 10:44 #6
Ser det stadig skummelt ud ??
Avatar billede venne Nybegynder
21. maj 2003 - 11:00 #7
Nja... hvad med:

SQL = "SELECT country.*, customer.* FROM customer " &_
    "LEFT JOIN country ON country.CountryID = customer.Country " &_
    "WHERE customer.Country = '" & strCountry & "' AND " &_
    "customer.Zip BETWEEN '" & intZipFrom & "' AND '" & intZipTo & "' AND "&_
    "(customer.CatID1 = '" & strCategory & "' OR customer.CatID2 = '" & strCategory & "' OR customer.CatID3 = '" & strCategory & "') " &_
    "ORDER BY country.CountryName, customer.Name"

Når sådan noget ikke virker kan det tit hjælpe at kigge på SQL'en lige inden den udføres, altså efter at strengen er opbygget. Så kan man også tage strengen med over i Access i en forespørgsel og lege med den indtil det virker.
Avatar billede tre Nybegynder
21. maj 2003 - 11:05 #8
Har lige prøvet SQL sætningen, men den viser alligevel alle postnumre!

Jeg kunne godt se at dit foreslag så noget bedre ud :-)


Jeg har prøvet med og uden konvertering til Integer. Når jeg prøver at konveretre siger den at typerne ikke passer sammen!
Avatar billede venne Nybegynder
21. maj 2003 - 12:08 #9
Kan du ikke poste indholdet af SQL så vi kan se hvordan det ser ud når det køres.
Avatar billede roenving Novice
21. maj 2003 - 12:10 #10
Forøvrigt skrives svenske opstnumre ofte med et mellemrumi ...-|
Avatar billede tre Nybegynder
22. maj 2003 - 09:01 #11
Ja - postnumre på verdensplan er noget blandet rod.

Men Tyskland kan det jo bruges til at regionsinddele! Skide smart.


Venne >> vil du se noget indhold af databasen??
Avatar billede venne Nybegynder
22. maj 2003 - 10:22 #12
Jeg mente nu SQL-udtrykket, altså forespørgslen, lige inden den udføres.
Avatar billede tre Nybegynder
22. maj 2003 - 11:16 #13
Nååå - det ser sådan ud:

SQL = "SELECT country.*, customer.* FROM customer " &_
      "LEFT JOIN country ON country.CountryID = customer.Country " &_
        "WHERE customer.Country = '" & strCountry & "' AND " &_
        "customer.Zip BETWEEN '" & intZipFrom & "' AND '" & intZipTo & "' AND "&_
        "(customer.CatID1 = '" & strCategory & "' OR customer.CatID2 = '" & strCategory & "' OR customer.CatID3 = '" & strCategory & "') " &_
        "ORDER BY country.CountryName, customer.Name"
Avatar billede venne Nybegynder
22. maj 2003 - 11:30 #14
Jeg mente indholdet af variablen SQL efter den kodelinie - kan du ikke printe den ud eller sådan noget. Det kan godt være lidt svært at se hvad alle de & og " og _ bliver til. Sommetider bliver det til noget andet end man regner med.
Avatar billede tre Nybegynder
22. maj 2003 - 12:21 #15
Nåå - det ser sådan ud:

SELECT country.*, customer.* FROM customer LEFT JOIN country ON country.CountryID = customer.Country WHERE customer.Country = 'de' AND customer.CatID1 = 'Cat1' OR customer.Country = 'de' AND customer.CatID2 = Cat1' OR customer.Country = 'de' AND customer.CatID3 = 'Cat1' ORDER BY country.CountryName, customer.Name
Avatar billede tre Nybegynder
22. maj 2003 - 12:22 #16
JA - den ser godt nok fuldstændig bort fra postnumrene!!
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
Kurser inden for grundlæggende programmering

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