AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Parameter bei AdoQuery
Thema durchsuchen
Ansicht
Themen-Optionen

Parameter bei AdoQuery

Ein Thema von ahachmann · begonnen am 9. Feb 2004 · letzter Beitrag vom 10. Feb 2004
Antwort Antwort
ahachmann

Registriert seit: 15. Sep 2003
Ort: Hamburg
54 Beiträge
 
Delphi 7 Professional
 
#1

Parameter bei AdoQuery

  Alt 9. Feb 2004, 15:17
Hallo,
Mein Wunsch ist es, daß ich für 5 verschiedene Artikeltabellen ein und dieselbe Query nutzen will. Dazu dachte ich mir, daß jede Prozedure, die das ADOQUERY nutzt seinen gewünschten SQL-String eingibt. Irgendwann habe ich das auch mal hinbekommen. Nun muß ich aber leider immer die Parameter fest erstellen. Bei dem Aufwand hat man ja Seiten weniger Code, wenn man für jede Tabelle ein Update Object baut. (uahhh, das ist ja nicht schön).
Muß ich wirklich immer die Parameter anlegen, oder bekommt das ADOQUERY Object dies auch von alleine hin? Will am libsten jedesmal nur folgendes machen:
Delphi-Quellcode:
    dmDbTools.qryTubes.SQL.Clear;
    intResult := dmDbTools.qryTubes.SQL.Add('UPDATE tubes SET name=:Pname '+
                 'WHERE article_id=:Particle;');
    dmDbTools.qryTubes.Parameters.ParamByName('Pname').Value := name;
    dmDbTools.qryTubes.Parameters.ParamByName('Particle').Value := article;
    intResult := dmDbTools.qryTubes.ExecSQL;
Ohne den Parameter anzulegen, da ja jede Tabelle andere hat.
Bin der Meinung, das das mal so lief.
Hoffe die Frage ist verständlich.
Vielen Dank,
Alexander
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Parameter bei AdoQuery

  Alt 9. Feb 2004, 19:26
Fast genau so sollte es gehen. Und wenn Du statt der AdoQuery noch AdoCommand nimmst, ist es perfekt. Das sollte dann ca. so aussehen (jetzt nicht kompiliert, sondern nur so getippt):
Delphi-Quellcode:
dmDbTools.qryTubes.CommandText := 'UPDATE tubes SET name=:Pname '+
  'WHERE article_id=:Particle;');
dmDbTools.qryTubes.Parameters.ParamByName('Pname').Value := name;
dmDbTools.qryTubes.Parameters.ParamByName('Particle').Value := article;
dmDbTools.qryTubes.Execute;
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#3

Re: Parameter bei AdoQuery

  Alt 9. Feb 2004, 19:49
Ich benutze kein ADO, würde aber trotzdem gerne wissen welche Vorteile ADOCommand gegenüber einer ADOQuery hat?
Ich hätte es sonst so geschrieben:
Delphi-Quellcode:
  With qryTubes Do
  Begin
    SQL.Text :=
      'UPDATE Tubes' + #10 +
      'SET NAME = :PName' + #10 +
      'WHERE Article_ID = :PArticle';
    Parameters.ParamByName('PName').Value := Name;
    Parameters.ParamByName('PArticle').Value := Articel;
    intResult := ExecSQL;
  End;
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: Parameter bei AdoQuery

  Alt 10. Feb 2004, 06:59
AdoCommand ist zum Absetzen von SQL-Anweisungen gut, wenn der Rückgabewert nicht in einer DataSource dargestellt werden muss. Man kann zwar auch die Datenmenge auslesen, aber nicht so gut wie mit einer Query oder Table. Dafür ist es theoretisch schneller, weil es viel weniger Overhead bietet. Also gerade für Update, Insert und Select Count Anweisungen per SQL ideal...
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: Parameter bei AdoQuery

  Alt 10. Feb 2004, 07:02
Die beiden Routinen habe ich mir im DataModul hinterlegt:
Delphi-Quellcode:
function TDataModuleServer.GetCommandValue(Commando: String): Variant;
var rs: _Recordset;
begin
 WITH TADOCommand.Create(Self) DO
  TRY
   Connection := ADOConnection????;
   CommandText := Commando;
   rs := Execute;
   IF (rs <> NIL) AND
      (NOT (rs.BOF AND rs.EOF))
    THEN Result := rs.Fields[0].Value;
  FINALLY
   rs := NIL;
   Free;
  END;
end; // GetCommandValue

procedure TDataModuleServer.ExcecuteCommand(Commando: String);
begin
 WITH TADOCommand.Create(Self) DO
  TRY
   Connection := ADOConnection????;
   CommandText := Commando;
   Execute;
  FINALLY
   Free;
  END;
end; // ExcecuteCommand
Einfach, aber effektiv
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
ahachmann

Registriert seit: 15. Sep 2003
Ort: Hamburg
54 Beiträge
 
Delphi 7 Professional
 
#6

Re: Parameter bei AdoQuery

  Alt 10. Feb 2004, 11:45
Hallo,
Das trifft das problem leider noch nicht. Aus irgendeinem Grund, will da ADOQuery und auch das ADOCommand, daß ich ihm im Objectexplorer oder per code die Parameter übergebe. Ich muß die jedes mal nicht nur per ParamByName belegen, sondern auch vorher dem Objekt hinzufügen.
Und ihr macht das immer ohne das Anmelden, was bei mir auch mal funktioniert hat. Warum läuft das jetzt nicht mehr bei mir?
Gruß und Thx,
Alexander
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: Parameter bei AdoQuery

  Alt 10. Feb 2004, 11:46
Vielleicht einfach prepared auf True setzten.
  Mit Zitat antworten Zitat
ahachmann

Registriert seit: 15. Sep 2003
Ort: Hamburg
54 Beiträge
 
Delphi 7 Professional
 
#8

Re: Parameter bei AdoQuery

  Alt 10. Feb 2004, 11:49
Hmm,
Das hatte ich eigentlich auch schon probiert. Da hatte es nicht geklappt.
Jetzt funtzt es.
Vielen Dank.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz