AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi INSERT INTO & MS Access
Thema durchsuchen
Ansicht
Themen-Optionen

INSERT INTO & MS Access

Ein Thema von Moony · begonnen am 14. Mai 2007 · letzter Beitrag vom 16. Mai 2007
Antwort Antwort
Seite 2 von 4     12 34      
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#11

Re: INSERT INTO & MS Access

  Alt 15. Mai 2007, 13:44
@marabu: Es verstößt nicht gegen die Regeln....Die Tabelle wird tausendmal anderweitig verwendet. Ich lese die Feldnamen vorher aus der Accesstabelle aus und übergebe diese dann an den SQL-String folgendermaßen:

Delphi-Quellcode:
Lst := TStringList.Create;
try
  for n := 0 to myaccessDS.FieldCount - 1 do
  begin
    if (Pos('Logo', myaccessDS.Fields.Fields[n].FieldName) = 0) then
      Lst.Add(myaccessDS.Fields.Fields[n].FieldName);
  end;
finally
  myFields := Lst.Commatext;
  Lst.Free;
end;

...

while not MySQLDS.Eof do
begin
  myValues := AnsiQuotedStr(mySQLds.FieldByName('Category').AsString, #39) +',';
  myValues := myValues + AnsiQuotedStr(mySQLds.FieldByName('Name').AsString, #39) +',';
  ...
  SQL := 'INSERT INTO race00 (' + myFields + ') VALUES (' + myValues + ')';
  try
    if myaccessDB.Connected then
    begin
      myaccessComm.CommandText := SQL;
      myaccessComm.Execute;
    end;
  except
  end;
end;
Das mySQLDS besitzt mindestens alle Felder, welche in der Accesstabelle vorhanden sind und mehr.


@hoika: Welche Parameter?
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: INSERT INTO & MS Access

  Alt 15. Mai 2007, 14:03
Zitat:
@hoika: Welche Parameter?
Zitat SQL-Parameter:
INSERT INTO myTable (Feld1,Feld2,Feld3,Feld4,Feld5,Feld6,Feld7) VALUES (:wert1, :wert2, ...); myCommand.Parameters.ParamByName('wert1).Value := ...;
Markus Kinzler
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#13

Re: INSERT INTO & MS Access

  Alt 15. Mai 2007, 14:14
Welchen Sinn hat diese Abfrage. davon abgesehen verstehe ich nicht was ich mit der Zuweisung des Doppelpunkts und die von Parambyname machen soll.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: INSERT INTO & MS Access

  Alt 15. Mai 2007, 14:21
Moonly,

wenn du schon dein SQL-Statement in einer String-Variable
stehen hast, dann sehe die dir doch in dem Debugger mal an.

Ist ziemlich durcheinander dein Code
die Felder sind alle Felder mit LogoX,
die Werte holst du dir aus Category.Wenn jetzt weniger Category als Logo-Felder
existieren, knallt es auf jeden Fall.

Ausserdem rufst du die Insert-Query für jeden Datensatz
in MySQLDS einmal auf, ist das gewollt ?

Vielleicht steht ganz hinten (vor der Schliessenklammer) des Value
laut deinem Code ein Komma zu viel.


Was steht denn nun direkt in der Abfrage (SQL)?


Heiko
PS: mit Parametern ( : ) kannst du das QuotedStr weglassen,
das macht das AsString selber.
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: INSERT INTO & MS Access

  Alt 15. Mai 2007, 14:22
In der Abfrage stellt man nur parameter ein. Diese erkennt man an dem vorangestellten Doppelpunkt. Später füllt man diese mit Werten.
Vorteile:
-Format der Werte wird anhand der Parameter gesetzt -< Keine Quoten nötig
-Abfrage kann öfters verwendet werden und nur die Parameter werden an das DBMS übertragen.
Markus Kinzler
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#16

Re: INSERT INTO & MS Access

  Alt 15. Mai 2007, 16:14
@hoika:
1. Wenn du aufgepasst hättest, dann würdest du im source auch sehen, dass ich alle Felder einlese bei denen es NICHT LOGO heißt! Ich hole mir nur einen Wert aus einem anderen Dataset aus einem bestimmten Feld. Diese Felder existieren auch mit 100%iger Sicherheit.

2. Jeder Datensatz soll einzeln eingefügt werden

3. Im Insert-Befehl steht alles vollkommen richtig drin, denn ich habe mir meine SQL-Variable beobachtet, habe den Wert dieser
kopiert und in der Accesstablle direkt als Abfrage eingefügt, und hier funktioniert der Befehle wenn ich diesen ausführe.

@kinzler:
Wenn ich erst die parameter setze und dann erst die Werte dann brauche ich doppelt soviel source. außerdem hat das bis jetzt bei all meinen tausenden von abragen immer so geklappt.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: INSERT INTO & MS Access

  Alt 15. Mai 2007, 16:29
Du mußt die Abfrage ja nur einmal setzen. In der Schleife brauchst du nur noch die Parameter setzen.
Markus Kinzler
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#18

Re: INSERT INTO & MS Access

  Alt 15. Mai 2007, 16:33
das kommt doch aufs gleiche raus ob ich zusätzlich die parameter setze oder ob ich von vornherein die einzelnen werte setze, oder sehe ich das falsch?


nichts desto trotz bleibt dennoch der fehler bestehen...
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#19

Re: INSERT INTO & MS Access

  Alt 15. Mai 2007, 16:38
Zitat:
das kommt doch aufs gleiche raus ob ich zusätzlich die parameter setze oder ob ich von vornherein die einzelnen werte setze, oder sehe ich das falsch?
-Wieviele Inserts werden eingefügt? Die Abfrage muß nur einmal gesetzt werden (z.B. fix oder im Programmanfang) bei den einzelnen Inserts müssen nur die Parameter gefüllt werden.
-Man muß Typen nicht beachten
-Abfrage ist übersichtlicher.
Markus Kinzler
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#20

Re: INSERT INTO & MS Access

  Alt 15. Mai 2007, 17:05
Die Anzahl der Inserts hängt von der Datenmenge ab. Das könnte schon bis zu den 100000en führen.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 14:40 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