det er formodentligt fordi du kører beregninger inden i din SQL streng. Gør det istedet at du laver dine beregninger først, gemmer dem som en sessions variabel og så kører SQLén. altså noget i retningen af (jeg kan ikke helt gennemskue om dine værdier er tal eller tekst og hvad du præcist vil):
ca 4000 jeg kan ikke rigtigt finde ud af det. Det nemmeste ville være hvis en af jer har lavet en søgeside med dropdownliste og et søgefelt. Desuden result.asp siden. Hvis jeg kunne se koden på disse. (vel og mærke lavet id ultradev ) så kunne jeg måske finde fejlen.
Der er et andet problem! >> SELECT * FROM data WHERE CPR-NUMMER = \'1111111111\' giver fejl >> SELECT * FROM data WHERE FORNAVN = \'Jan Mikael\' er ok!
begge er sat som tekststrenge i access databasen! Jeg kan ikke lige dreje hvad man kan gøre her?
Det er fordi du skifter mellem \'Tekst\' feldter og \'TAL\' feldter i databasen
<% set persondata = Server.CreateObject(\"ADODB.Recordset\") persondata.ActiveConnection = MM_connection_STRING If Request.Form(\"c\") = \"CPR-NUMMER\" or \"TELEFON\" Then persondata.Source = \"SELECT * FROM data WHERE \" + Replace(persondata__c, \"\'\", \"\'\'\") + \" = \" + Replace(persondata__t, \"\'\", \"\'\'\") + \"\" Else persondata.Source = \"SELECT * FROM data WHERE \" + Replace(persondata__c, \"\'\", \"\'\'\") + \" = \'\" + Replace(persondata__t, \"\'\", \"\'\'\") + \"\'\" End If persondata.CursorType = 0 persondata.CursorLocation = 2 persondata.LockType = 3 persondata.Open() persondata_numRows = 0 %>
Der hvor jeg har skrevet If Request.Form(\"c\") = \"CPR-NUMMER\" or \"TELEFON\" Then skal alle dine TAL feldter skrives ind i \"\" adskilt med en OR sætning.
Hmmmmmmmmmmmmm strangeeeeeeeeeeeee jeg kan ikke lægge det ind som et svar ?????? kun som en kommentar????
Hvis det kommer ind igen er det altså fordi jeg lige sidder og prøve at lægge det ind som et svar, lykkes det ikke må vi jo lige have fat i admin og melde fejlen....
Det er fordi du skifter mellem \'Tekst\' feldter og \'TAL\' feldter i databasen
<% set persondata = Server.CreateObject(\"ADODB.Recordset\") persondata.ActiveConnection = MM_connection_STRING If Request.Form(\"c\") = \"CPR-NUMMER\" or \"TELEFON\" Then persondata.Source = \"SELECT * FROM data WHERE \" + Replace(persondata__c, \"\'\", \"\'\'\") + \" = \" + Replace(persondata__t, \"\'\", \"\'\'\") + \"\" Else persondata.Source = \"SELECT * FROM data WHERE \" + Replace(persondata__c, \"\'\", \"\'\'\") + \" = \'\" + Replace(persondata__t, \"\'\", \"\'\'\") + \"\'\" End If persondata.CursorType = 0 persondata.CursorLocation = 2 persondata.LockType = 3 persondata.Open() persondata_numRows = 0 %>
Der hvor jeg har skrevet If Request.Form(\"c\") = \"CPR-NUMMER\" or \"TELEFON\" Then skal alle dine TAL feldter skrives ind i \"\" adskilt med en OR sætning.
For nemhedens skyld er alle felter registreret som tekst. Både telefon og cprnummer er tekst i databasen. Jeg har dobbeltjekket! Men tilgængæld har jeg prøvet at slette alt og starte forfra da jeg opdagede at man ikke kunne bruge - i cpr-nummer. Desuden har jeg lavet alt med småt , da jeg ikke ved hvor case sensitiv SQL/ACCESS/ASP er!
nu melder den: SELECT * FROM data WHERE \'CPR-NUMMER\'= \'1111111111\' ADODB.Field error \'800a0bcd\'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/journal/result.asp, line 30
og det er vist et meget godt tegn. Men skal det virkeligt være så svært?
Jeg hæver points og vedlægger HELE result.asp og search.asp
result: <%@LANGUAGE=\"VBSCRIPT\"%> <!--#include file=\"Connections/connection.asp\" --> <% Dim Recordset1__t Recordset1__t = \"xyz\" if (Request.Form(\"t\") <> \"\") then Recordset1__t = Request.Form(\"t\") %> <% Dim Recordset1__c Recordset1__c = \"xyz\" if (Request.Form(\"c\") <> \"\") then Recordset1__c = Request.Form(\"c\") %> <% set Recordset1 = Server.CreateObject(\"ADODB.Recordset\") Recordset1.ActiveConnection = MM_connection_STRING Recordset1.Source = \"SELECT * FROM data WHERE \'\" + Replace(Recordset1__c, \"\'\", \"\'\'\") + \"\'= \'\" + Replace(Recordset1__t, \"\'\", \"\'\'\") + \"\'\" response.write Recordset1.Source Recordset1.CursorType = 0 Recordset1.CursorLocation = 2 Recordset1.LockType = 3 Recordset1.Open() Recordset1_numRows = 0 %> <html> <head> <title>Untitled Document</title> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"> </head> <body bgcolor=\"#FFFFFF\" text=\"#000000\"> <%=(Recordset1.Fields.Item(\"CPRnummer\").Value)%><br> <%=(Recordset1.Fields.Item(\"FORNAVN\").Value)%> </body> </html> <% Recordset1.Close() %>
<%@LANGUAGE=\"VBSCRIPT\"%> <!--#include file=\"Connections/connection.asp\" --> <% Dim Recordset1__t Recordset1__t = \"xyz\" if (Request.Form(\"t\") <> \"\") then Recordset1__t = Request.Form(\"t\") %> <% Dim Recordset1__c Recordset1__c = \"xyz\" if (Request.Form(\"c\") <> \"\") then Recordset1__c = Request.Form(\"c\") %> <% set Recordset1 = Server.CreateObject(\"ADODB.Recordset\") Recordset1.ActiveConnection = MM_connection_STRING Recordset1.Source = \"SELECT * FROM data WHERE \" + Replace(Recordset1__c, \"\'\", \"\'\'\") + \" = \'\" + Replace(Recordset1__t, \"\'\", \"\'\'\") + \"\'\" response.write Recordset1.Source Recordset1.CursorType = 0 Recordset1.CursorLocation = 2 Recordset1.LockType = 3 Recordset1.Open() Recordset1_numRows = 0 %> <html> <head> <title>Untitled Document</title> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"> </head> <body bgcolor=\"#FFFFFF\" text=\"#000000\"> <p> <% If Not Recordset1.EOF Or Not Recordset1.BOF Then %> <%=(Recordset1.Fields.Item(\"CPRnummer\").Value)%><br> <%=(Recordset1.Fields.Item(\"FORNAVN\").Value)%> <% End If \' end Not Recordset1.EOF Or NOT Recordset1.BOF %> </p> <% If Recordset1.EOF And Recordset1.BOF Then %> <p>Ingen data fundet.</p> <% End If \' end Recordset1.EOF And Recordset1.BOF %> <p> </p> </body> </html> <% Recordset1.Close() %>
Øhhhhhhhhhhhh jeg sad lige og kiggede lidt mere på det.
Nogle gange poster du sider hvor recordsettet hedder \'recordset1\' og andre gange hvor det hedder \'persondata\' Det hele går op i en stor forvirring hvis du sidder og arbejder på forskellige sider og laver om hele tiden. (Jeg ved jo ikke hvad du laver og ikke laver)
Post lige den aktuelle side som du vil have lavet og ikke de test sider du har lavet, Ok ?
Læg mærke til at SQL strengen er ændret så der ikke er \' omkring din c
Altså i stedet for select * from data where \'c\' = \'t\' så select * from data where c = \'t\'
hvis c var et tal feldt så skulle den se sådant ud select * from data where c = t altså ingen \' nogen steder
<%@LANGUAGE=\"VBSCRIPT\"%> <!--#include file=\"Connections/connection.asp\" --> <% Dim persondata__t persondata__t = \"xyz\" if (Request.Form(\"t\") <> \"\") then persondata__t = Request.Form(\"t\") %> <% Dim persondata__c persondata__c = \"xyz\" if (Request.Form(\"c\") <> \"\") then persondata__c = Request.Form(\"c\") %> <% set persondata = Server.CreateObject(\"ADODB.Recordset\") persondata.ActiveConnection = MM_connection_STRING persondata.Source = \"SELECT * FROM data WHERE \" + Replace(persondata__c, \"\'\", \"\'\'\") + \" = \'\" + Replace(persondata__t, \"\'\", \"\'\'\") + \"\'\" response.write persondata.Source persondata.CursorType = 0 persondata.CursorLocation = 2 persondata.LockType = 3 persondata.Open() persondata_numRows = 0 %> <html> <head> <title>Untitled Document</title> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"> </head> <body bgcolor=\"#FFFFFF\" text=\"#000000\"> <p> <% If Not persondata.EOF Or Not persondata.BOF Then %> <%=(persondata.Fields.Item(\"cprnummer\").Value)%><br> <%=(persondata.Fields.Item(\"fornavn\").Value)%> <% End If \' end Not persondata.EOF Or NOT persondata.BOF %> </p> <% If persondata.EOF And persondata.BOF Then %> <p>Ingen Data fundet</p> <% End If \' end persondata.EOF And persondata.BOF %> <p> </p> </body> </html> <% persondata.Close() %>
Prøv lige dette, håber det funger da det er håndskrevet så UD skulle kunne læse det.
Hvis ikke dette funger, så laver du en KOPI af din database, åbner den i MS ACCESS, åbner dit TABLE data. Trykker ctrl + A så alt markeres, går op under EDIT og vælger DELETE RECORD så slettes alle 4000 personer i databasen. Den tomme database sender du så til mig. Jeg gidder ikke sidde og rode mere med denne simple side, hvis det ikke funger sender du DB\'en.
Det virker! og heldigvis bojohansen. Jeg er meget taknemlig for denne gang! Der er nogle småfejl hvis man vælger telefon, men jeg regner med at det er databasen eller hvis den ikke eksistere. Du har lavet en god beskrivelse af hvad du har gjort så jeg kan godt finde ud af resten! tak!
Hvis du føler for det, så send databasen uden klient info i, men indsæt eventuelt nogle feldter med fiktiv info om de telefon feldter som giver bøvl, så skal jeg prøve at kigge på det, Ok?
Synes godt om
Ny brugerNybegynder
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.