/ Forside/ Teknologi / Udvikling / ASP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Fejl: Datatyperne stemmer ikke overens
Fra : kvamse
Vist : 1226 gange
40 point
Dato : 08-01-03 10:53

Hej

Jeg får flg. fejlmeddelse: Datatyperne stemmer ikke overens i kriterieudtrykket

Min forspøgerelse ser sådan her ud:

Personsql = "Select postnr from person where id=41"
Set person = Conn.Execute(personsql)

posten = person("postnr")
response.write(posten)

' hertil køre det fint

sqlby = "select * from postby where postnummer=8740"

' det er i denne sætning at den kommer med fejlen:Datatyperne stemmer ikke overens i kriterieudtrykket
' jeg ved ikke hvad den mener for begge felter i databasen er af tekst format.

byen = Conn.Execute(sqlby)
tekstby = Byen("by")
respone.write(tekstby)

tak for hjælpen
Kvamse

 
 
Kommentar
Fra : zonker


Dato : 08-01-03 15:30

hvordan er din postby og postnummer defineret ? Hvilken tabel henter du dem fra og hvor stor henvisningen ?

Kommentar
Fra : zonker


Dato : 08-01-03 15:31

jeg mente nu postnummer.postby og postnr

Kommentar
Fra : smorch


Dato : 08-01-03 16:15

Download evt. mit script hér. Der er en database med alle postnumre i.

http://activedeveloper.dk/download/default.asp?mode=showdownload&id=183

Mvh

sMorch
lm@morch.dk

Kommentar
Fra : kvamse


Dato : 09-01-03 09:31

Hej smorch

Jeg indsætter her hele scriptet så er det måske letter at se hvad jeg mener.
I begge tabeller står postnummer som tekst. Jeg henter så postnummeret op fra tabellen person og gemmer postnummeret i variablen posten. det skulle nu være lige til at lave næste forspørgelse men jeg kan ikke få den til at virke. da variablen skal omgives af enkelt pinger ' ud over det der står i scriptet har jeg prøvet flg.
Uden held.
sqlby = "select * from postby where postnummer="&"'"&posten&"'"

sqlby = "select * from postby where postnummer='" & posten & "'"

sqlby = "select * from postby where postnummer="&posten&"'"

<body>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("udvalgende.mdb")
Conn.Open DSN
Personsql = "Select postnr from person where id=41"
Set person = Conn.Execute(personsql)

posten = person("postnr")
response.write(posten)
sqlby = "select * from postby where postnummer=&posten
byen = Conn.Execute(sqlby)
tekstby = Byen("by")
respone.write(tekstby)

Conn.Close
Set Conn = Nothing
%>
</body>

</html>

Kommentar
Fra : Dysmorf


Dato : 09-01-03 10:56

Ok... lav dit postnummer om til tal og forespørg databasen via SQL med følgende:

sqlby = "SELECT * FROM postby WHERE postnummer = " & posten

Det er det hele, du skal kun, som smorch også siger, bruge plinger ( ' ) for at afgrænse tekst. Rene tal skal ikke afgrænses.

Der iøvrigt heller ikke grund til at du vælger alt fra tabellen hvis du kun skal have fat i bynavnet. Du kan til fordel gøre følgende i SQL:

sqlby = "SELECT by FROM postby WHERE postnummer = " & posten

På den måde vælger du kun bynavnet, og kan derfor udskrive det på følgende måde:

Response.Write(Conn.Execute(sqlby))

Idet du kun får én enkelt celle udskrevet er det ikke nødvendigt at definere den ved først at sætte en variabel til at demme indholdet.

Dit problem består i at du ikke kan hente noget fra din postby tabel sålænge du ikke har sat noget recordset som du har gjort med personsql (Set person = Conn.Execute(personsql) ).

Du kan naturligvis også vælge at først gemme indholdet i en variabel ved at gøre følgende (som du faktisk allerede har gjort):

tekstby = Conn.Execute(sqlby)

Lad mig lige tage den helt fra toppen med mine egne ideer til hvordan den skal se ud, ok... ;)

<body>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("udvalgende.mdb")
Conn.Open DSN
Personsql = "Select postnr from person where id=41"
Set person = Conn.Execute(personsql)

posten = person("postnr")
response.write(posten)
sqlby = "SELECT by FROM postby WHERE postnummer = " & posten
response.write(Conn.Execute(sqlby))

Conn.Close
Set Conn = Nothing
%>
</body>

</html>

Det er god kodeskig at bruge store bogstaver når du skriver SQL, altså således at alt SQL-sproget står med stort og alle tabelnavne osv stå med småt.

Håber du kunne bruge det til noget

Held og lykke
Dysmorf

Kommentar
Fra : smorch


Dato : 09-01-03 13:33

Du kan roligt acceptere Dysmorf's kommentar som svar.

Mvh

sMorch

Accepteret svar
Fra : jepses

Modtaget 40 point
Dato : 11-01-03 16:30

Hvorfor 2 sql forspørgsler når det kan klares med en???

<body>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("udvalgende.mdb")
Conn.Open DSN
Personsql = "Select person.postnr as postnr, postby.by as bynavn from person, postby where postby.by = person.postnr and person.id=41"
Set Rs = Conn.Execute(personsql)

response.write "postnr. og by : " & rs("postnr") & " " & rs("bynavn")

Conn.Close
Set Conn = Nothing
%>
</body>

</html>

Se ya

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409073
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste