" in SQL Abfragen WIE? Will autom. Links generieren(VB)
Andreas
- datenbank
Hallo!
Eine Frage vorab, war zwar die Tage schonmal kurz angeschnitten worden, wie sieht das aus mit der Browserkompatibilität, wenn man im html-Code auf " verzichtet, also einen link der Art:
<a href=http://www.xxx.de/>link</a>
Ich hab da keine Problem gehabt, gibt es Browser, welche das nicht so ohne weiteres verstehen? Kann ich das so machan, oder gibt es dabei zu viele Probleme?
Dasselbe übrigens auch bei Bildern, will disen link nämlich in ein Image einbauen.
Warum ich Frage:
Ich habe in Access eine SQL Abfrage geschrieben, die mir automatisch aus den Tabelendaten Links generiert, nur da man die " schon verwendet und ich die zusätzlich innerhalb des Links einsetzten will, denkt SQL jedesmal, die Abfrage wäre zu Ende, obwohl ich nur "<a href="...?Name=" & [Tabelle].[Feld] & "">text</a>" geschrieben habe. Klar dass das so nicht funktionieren kann, halt nur die Frage, ob es in Access Abfragen(normal SQL) die Möglichkeit gibt, irgendwie trotzdem die Zeichen einzufügen, so woe in php mit ".
Leider kenn ich da keine Möglichkeit und kann auf der anderen Seite nicht einschätzen, wie wichtig diese Zeichen in den Links und Image-Tags überhaupt sind.
Vielleicht kann mr hier ja jemand weiterhelfen!
Gruß
Andreas
Hallo!
Eine Frage vorab, war zwar die Tage schonmal kurz angeschnitten worden, wie sieht das aus mit der Browserkompatibilität, wenn man im html-Code auf " verzichtet, also einen link der Art:
<a href=http://www.xxx.de/>link</a>
Ich hab da keine Problem gehabt, gibt es Browser, welche das nicht so ohne weiteres verstehen? Kann ich das so machan, oder gibt es dabei zu viele Probleme?
Dasselbe übrigens auch bei Bildern, will disen link nämlich in ein Image einbauen.
Warum ich Frage:
Ich habe in Access eine SQL Abfrage geschrieben, die mir automatisch aus den Tabelendaten Links generiert, nur da man die " schon verwendet und ich die zusätzlich innerhalb des Links einsetzten will, denkt SQL jedesmal, die Abfrage wäre zu Ende, obwohl ich nur "<a href="...?Name=" & [Tabelle].[Feld] & "">text</a>" geschrieben habe. Klar dass das so nicht funktionieren kann, halt nur die Frage, ob es in Access Abfragen(normal SQL) die Möglichkeit gibt, irgendwie trotzdem die Zeichen einzufügen, so woe in php mit ".
Leider kenn ich da keine Möglichkeit und kann auf der anderen Seite nicht einschätzen, wie wichtig diese Zeichen in den Links und Image-Tags überhaupt sind.
das hat mit sql nicht viel zu tun
in vb verdoppelst du die zeichen einfach die beim programmieren probleme bereiten können :-)
also "" für "
für ' machst du ''
response.write "<a href=""...?name=" & var & """>link</a>"
sollte funzen :-)
cu
Vielleicht kann mr hier ja jemand weiterhelfen!
Gruß
Andreas
Hiho,
den Trick mit Verdoppelung der Zeichen hab ich ganz zu Anfang meiner ASP-Gehversuche ausprobiert, brachte mir nur Fehlermeldung. Deshalb ersetzte ich solche Literale gern mit " oder mit Chr(34). Diese werden problemlos verarbeitet.
Außerdem kannst du doch " mit ' kombinieren?? Zumindest funzt das bei mir wunderbar. Mit Chr(34) bist du aber immer auf der sicheren Seite was wohlgeformtes HTML angeht.
Gruß, Frank
Hi Frank!
Ja, danke für die Tipps, das mit dem Verdoppeln hat bei mir auch nicht geklappt.
Mal ne andere Frage, wie schaffe ich es in VB, dass alle Umlaute, Leerzeichen.... in html-Code umgewandelt werden? Ich schreibe nämlich mit meinem Code eine html-Datei, funktioniert prima, bis es zu Leerzeichen oder Umlauten kommt.
Gibt es irgendeine Funktion, mit der man das alles ersetzten kann, sowas wie urlencode?
Oder muß ich die jetzt alle einzeln umwandeln?
Wenn ja womit ersetzte ich Zeichen in VB?
Gruß
Andreas
Hi Frank!
Ja, danke für die Tipps, das mit dem Verdoppeln hat bei mir auch nicht geklappt.
Mal ne andere Frage, wie schaffe ich es in VB, dass alle Umlaute, Leerzeichen.... in html-Code umgewandelt werden? Ich schreibe nämlich mit meinem Code eine html-Datei, funktioniert prima, bis es zu Leerzeichen oder Umlauten kommt.
Gibt es irgendeine Funktion, mit der man das alles ersetzten kann, sowas wie urlencode?
Oder muß ich die jetzt alle einzeln umwandeln?
Wenn ja womit ersetzte ich Zeichen in VB?
Gruß
Andreas
Hiho,
es gibt Server.HTMLEncode, nur wird dich das nicht viel weiter bringen. Sprich es codiert alles was als Funktionsargument übergeben wird auch < > zu < und > damit sinds dann keine Tags mehr sondern nur noch Text in Entitäten.
Wozu willst du eigentlich noch alles umcodieren, bzw. was meinst du mit "in HTML-Code umwandeln"? Das alle nichtnormal-Zeichen als Unicode in HTML geschrieben werden? Aber Browser können doch (Zeichensatz vorausgesetzt) Sonderzeichen darstellen. Egal, mein Tip:
html_text = "äö&"
set ErsetzArray = Server.CreateObject("Scripting.Dictionary")
...
ErsetzArray("ä") = "ä" 'so ein Konstrukt für jedes Sonderzeichen - die findest du alle sicher auch bei SelfHTML 8
....
for each entity in ErsetzArray.Keys
html_text = Replace(html_text,entity,ErsetzArray(entity))
next
Response.write html_text
set ersetzArray = nothing
Hoffe, das hilft dir weiter, try it out
Gruß, Frank
Hi Frank!
Sorry, hatte gedacht wegen des Titels würde das eh keiner mehr lesen, da es ja eine andere Frage ist.
Wozu willst du eigentlich noch alles umcodieren, bzw. was meinst du mit "in HTML-Code umwandeln"? Das alle nichtnormal-Zeichen als Unicode in HTML geschrieben werden?
Also das ist etwas blöd, denn wir wollen html-Tabellen schreiben, mit einem Link am Ende, der als GET-Variablen hinten die Werte aus den anderen Feldern mitschickt. Ich weiß, mit ner Datenbank ist das sehr viel einfacher, ist nur heir zur Zeit nicht möglich. Da es sich um 100-te Seiten handelt und ziemlich ausführliche Tabellen, dauert es alleine Die Links für eine kpl. Tabelle zu schreiben teilweise 1-2 oder auch mehr Stunden! Da habe ich mir überlegt, doch einfach mit Access in VB ein kleines Modul zu schreiben, welches aus einer Tabellenvorlage, die Tabelle ohne die Links wird halt importiert nach Access, jedenfalls macht das Modul aus dieser Tabelle eine TXT oder HTML Datei, in der die Links automatisch generiert werden. So weit so gut, mit txt auch kein Problem, wenn man die in html importiert wird das in den meisten Programmen eh entsprechend umgewandelt. Nur schön wäre es ja, wenn man direkt eine html Datei hätte, was auch kein Problem ist, einfach statt des Trennzeichens immer </td><td> usw. einfügen danach hat man auch ne prima html Tabelle. Nur leider ist dann das mit den Sonderzeichen, die dann im Code auch als solche da stehen, wenn die vorher schon in einem Feld gestanden haben.
»»Aber Browser können doch (Zeichensatz vorausgesetzt) Sonderzeichen darstellen.
Ja, das ist genau die Frage, können das alle Browser? Wenn jetzt 30% der Leute irgendwelche komischen Zeichen angezeigt bekommen ist das keine gute Werbung!
Wenn z.B. ein Leerzeichen in einem Link steht, funktioniert dieser nur bis zu diesem Zeichen, auch im IE6.0!
Jedenfalls werde ich deinen Vorschlag gleich mal ausprobieren.
Vielen Dank nochmal,
Gruß
Andreas
Hallo nochmal!
Ich hab deinen Code mal ausprobiert,nur leider funktionier da was nicht, es kommt immer die Fehlermeldung:
Laufzeitfehler,
Objekt erwartet und springt dann im Debugger auf die Zeile:
Set ersetzArray = Server.CreateObject("Scripting.Dictionary")
so sieht das ganz jetzt bei mir aus:
html_text = rs.Fields(2)
Set ersetzArray = Server.CreateObject("Scripting.Dictionary")
ersetzArray("ä") = "%E4"
ersetzArray("ö") = "%F6"
ersetzArray("ü") = "%FC"
ersetzArray("<") = "%3C"
ersetzArray(">") = "%3E"
ersetzArray(" ") = "%20"
For Each entity In ersetzArray.Keys
html_text = Replace(html_text, entity, ersetzArray(entity))
Next
Response.write html_text
Set ersetzArray = Nothing
Was mache ich falsch?
rs.Fields(2) kommt aus einem Recordset mit SQL, ich führe diesen Code dann immer in der Schleife durch, so das jede Zeile geändert wird.
Weißt Du woran das liegt?
Gruß
Andreas
Hi,
du hattest nicht geschrieben, daß du in VBA Access arbeitest... deshalb hab ich angenommen, du wirkst auf einem IIS4 oder höher mit Active Server Pages (VB Script)...
wenn du das über VBA machst, dann solltest du vorher im Menü Extras oder so den Eintrag "Verweise suchen"... da kriegst du ein Dialogfeld, aus dem du Microsoft Scripting Runtime anklickst und den Dialog über OK wieder zumachst.
aus set ersetzArray = Server.CreateObject wird dann
dim ersetzArray as New Dictionary
Der Rest sollte genauso laufen. Außer Response.Write, das gibts auch nur unter ASP aufm Server...
Gruß, Frank