Autor Beitrag
inselberg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458



BeitragVerfasst: Mo 07.04.03 12:08 
hi,

ich suche eine möglichkeit sonderzeichen in ein textfeld zuschreiben. gibt es einen andern weg als über ParamByName, da ich zum einfügen der datensätze eine batchkomponente benutze, die um einvielfaches schneller ist.

(mit ParamByName müsste ich daten -> query -> string -> batchkomponente)

Moderiert von user profile iconTino: Absätze entfernt.

_________________
hans bist du das ?
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Mo 07.04.03 22:55 
... bevor deine Frage ganz untergeht, werd ich ma versuchen dir zu helfen =)

Aalso:

Du brauchst eine Alternative zu ParamByName?

Ich hab das leider noch nie benutzt, bin mir also nicht so sicher, aber ich glaub damit übergibts du doch ganze einfach nur den SQL Text an die Query-Kompo, oder irr ich?

Wenn dem so ist, hast du dir schonmal
ausblenden Quelltext
1:
query.SQL.Text := (' .... ');					

oder
ausblenden Quelltext
1:
query.SQL.Add('... ');					

angeschaut?

hoffe das hilft etwas

mfg

Moderiert von user profile iconTino: Code-Tags hinzugefügt.
inselberg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458



BeitragVerfasst: Di 08.04.03 02:03 
der nachteil an der query komponente ist dass sie sql-befehl pro sql-befehl übergibt, was für meine anwendung viel zu langsam ist.

aus dem grund nutze ich ebenen eine batch komponente, die eine liste aus sql-befehlen auf einen "rutsch" überträgt.

nur müssen diese eben eine richtige schreibweise haben, also keine syntax fehler.

im mom. ersetze ich mittels replacestr alle " durch \" ... jedoch gibt es noch mehr zeichen die als steuerzeichen interpretiert werden, alles von "hand" zu ersetzen wäre zu zeitaufwendig.


also hilft mir dein posting nicht weiter ... trotzdem danke :)

_________________
hans bist du das ?
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Di 08.04.03 06:26 
TDataSet reicht völlig und Du schleppst keinen unnötigen Ballast mit. :shock:

_________________
Gruß
Hansa
inselberg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458



BeitragVerfasst: Di 08.04.03 12:13 
???

_________________
hans bist du das ?
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Di 08.04.03 13:04 
Hi,

ausblenden Quelltext
1:
2:
3:
4:
  ArtDataSet.close;
  ArtDataSet.SelectSQL.Text := 'SELECT NR, BEZ FROM ART WHERE BEZ = : Abfrage';
  ArtDataSet.Params.ParamByName ('Abfrage').AsString := Edit1.Text;
  ArtDataSet.open;


Hier soll ein Artikel über seinen Namen gesucht werden. Wobei als Parameter irgendein Text aus einer Editbox verwendet wird. Statt SelectSQL kann man natürlich auch InsertSQL usw. verwenden.

_________________
Gruß
Hansa
inselberg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458



BeitragVerfasst: Di 08.04.03 13:33 
es geht ums einfügen von vielen daten, und da ist diese methode extrem uneffektiv.

_________________
hans bist du das ?
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Di 08.04.03 14:04 
ineffektiv ? Kann schon sein, aber warum müssen es Parameter sein ? Du schreibst, es müssen sehr viele Daten "eingefügt" werden. Also per Programm ? Ja, dann mach das doch einfach mit FindField.

ausblenden Quelltext
1:
DataSet.FindField ('PREIS').AsFloat := ....					


Oder erklär mal, warum das ein Parameter sein muß.

_________________
Gruß
Hansa
inselberg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458



BeitragVerfasst: Di 08.04.03 14:23 
ein einfaches beispiel
ausblenden Quelltext
1:
2:
txt := 'hallo "welt"';
sql := 'INSERT INTO table VALUES ("'+txt+'");'

also
ausblenden Quelltext
1:
INSERT INTO table VALUES ("hallo "welt"");					

was natürlich falsch ist ..

mit ParamByName wäre 'hallo "welt"' richtig geparst worden (in 'hallo \"welt\"');

und warum benutzt du nun nicht ParamByName ?
*weil es eben nicht auf in der batchkomponente (zeos) nicht geht

und warum nicht manuell ersetzen?
* weil es halt nicht nur " zu ersetzen ist sondern auch ua % ... (und sicher welche die ich noch nicht mal kenne)
* durch mehrere ReplaceStr das programm viel langsamer wird


anmerkung: bei dem programm handelt es sich um einen newsreader (nntp) welcher die artikel mittels einer mysql datenbank verwaltet

Moderiert von user profile iconTino: Code-Tags hinzugefügt.

_________________
hans bist du das ?