AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken ADOQuery SQL Parameter keine Übergabe
Thema durchsuchen
Ansicht
Themen-Optionen

ADOQuery SQL Parameter keine Übergabe

Ein Thema von daredd · begonnen am 7. Mär 2011 · letzter Beitrag vom 7. Mär 2011
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: ADOQuery SQL Parameter keine Übergabe

  Alt 7. Mär 2011, 10:29
Dieses SQL-Statement liefert doch keine Daten zurück.
Es wird ausgeführt (der Name lässt es ja auch schon vermuten) mit ExecSQL Ein Active := True ist dabei unsinnig und falsch, weil nun das Statement nochmals ausgeführt wird und ein ResultSet erwartet wird, was es aber nicht gibt.
Ist auf der Spalte
Code:
products_id
auch noch ein Unique-Index dann rummst es dort auch noch.

Kontrollier doch mal die DB, denn die Werte sollten dann drinstehen (wenn es erst nach dem ExecSQL knallt)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#2

AW: ADOQuery SQL Parameter keine Übergabe

  Alt 7. Mär 2011, 10:35
Dieses SQL-Statement liefert doch keine Daten zurück.
Es wird ausgeführt (der Name lässt es ja auch schon vermuten) mit ExecSQL Ein Active := True ist dabei unsinnig und falsch, weil nun das Statement nochmals ausgeführt wird und ein ResultSet erwartet wird, was es aber nicht gibt.
Ist auf der Spalte
Code:
products_id
auch noch ein Unique-Index dann rummst es dort auch noch.

Kontrollier doch mal die DB, denn die Werte sollten dann drinstehen (wenn es erst nach dem ExecSQL knallt)
Ja, die Spalte products_id ist ein Unique-Index! Ich habe ADOQuery1.Active := true, entfernt und arbeite nur noch mit einem ExecSQL, trotzdem kommt die Meldung:' Wert für products_id fehlt...'
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#3

AW: ADOQuery SQL Parameter keine Übergabe

  Alt 7. Mär 2011, 10:37
Handelt es sich um einen Autowert? Den müsstest Du gar nicht übergeben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#4

AW: ADOQuery SQL Parameter keine Übergabe

  Alt 7. Mär 2011, 10:51
Also, leider wird der Wert nicht automatisch übergeben. Es ist in Access definiert 'Eindeutig', vorher war auch noch 'Ist erforderlich', das hab ich mal weggenommen und nun kommt folgende Meldung:
'Nullwert in Index oder Primär-Schlüssel nicht möglich'

Wie kann ich den eine automatische Wert setzen, habt das ganze mit eine Variable gelöst (i), die wird so ermittelt:

Delphi-Quellcode:
function TableStepBack(table :TADOTable) :Integer; //ID-nummer Ermitteln
var
s :Integer;
begin
  table.Last;
  Result := table.FieldByName('products_id').AsInteger + 1;
end;
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#5

AW: ADOQuery SQL Parameter keine Übergabe

  Alt 7. Mär 2011, 11:07
Damit das überhaupt funktionieren kann, muss die Tabelle auf jeden Fall aktuell und nach der ID sortiert sein.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#6

AW: ADOQuery SQL Parameter keine Übergabe

  Alt 7. Mär 2011, 11:10
Also, ich habe das mit dem 'products_id' hab ich gelöst. Hab in Access die Spalte als AutoWert definiert. Nun arbeitet das Query, aber ausser der products_id wird nichts in die Tabelle geschrieben.
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: ADOQuery SQL Parameter keine Übergabe

  Alt 7. Mär 2011, 11:18
Ich nehme mal an, du hast auch das SQL-Statement angepasst und die products_ID rausgenommen?

Generell mal gefragt, wieso arbeitest du/man mit den Parametern? Mach man das so? Hätte man nicht einfach die Werte direkt beim Zusammenbaues des SQL-Statements da reinschreiben können?
Ralph
  Mit Zitat antworten Zitat
daredd

Registriert seit: 2. Apr 2006
433 Beiträge
 
#8

AW: ADOQuery SQL Parameter keine Übergabe

  Alt 7. Mär 2011, 11:22
ja, die products_id ist aus dem sql raus:
Delphi-Quellcode:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('INSERT INTO Warenbestand(external_id, permission_id, products_owner, products_ean, products_quantity, products_average_quantity,'
+'products_shippingtime, products_model, products_master_model, products_master_flag, products_option_template, products_option_list_template,'
+'products_sort, products_image, products_price, date_added, last_modified, date_available, products_weight, products_status, products_tax_class_id,'
+'product_template, product_list_template, manufacturers_id, products_ordered, products_transactions, products_fsk18, products_vpe, products_vpe_status,'
+'products_vpe_value, products_startpage, products_startpage_sort, products_average_rating, products_rating_count, products_digital,'
+'products_serials, categories, products_description_de, products_name_de, products_short_description_de, url_text_de, meta_title_de, meta_keywords_de,'
+'meta_description_de, products_description_en, products_name_en, products_short_description_en, url_text_en, meta_title_en, meta_keywords_en, meta_description_en)');
ADOQuery1.SQL.Add('VALUES(:external_id, :permission_id, :products_owner, :products_ean, :products_quantity, :products_average_quantity,'
+':products_shippingtime, :products_model, :products_master_model, :products_master_flag, :products_option_template, :products_option_list_template,'
+':products_sort, :products_image, :products_price, :date_added, :last_modified, :date_available, :products_weight, :products_status, :products_tax_class_id,'
+':product_template, :product_list_template, :manufacturers_id, :products_ordered, :products_transactions, :products_fsk18, :products_vpe, :products_vpe_status,'
+':products_vpe_value, :products_startpage, :products_startpage_sort, :products_average_rating, :products_rating_count, :products_digital,'
+':products_serials, :categories, :products_description_de, :products_name_de, :products_short_description_de, :url_text_de, :meta_title_de, :meta_keywords_de,'
+':meta_description_de, :products_description_en, :products_name_en, :products_short_description_en, :url_text_en, :meta_title_en, :meta_keywords_en, :meta_description_en)');
Keine ahnung, hab das so gelernt. Ich muss werte aus einer anderen Tabelle kopieren, die nicht identisch ist mit der Tabelle 'Warenbestand'.
---------------------------------------------------------------------------
Mein Vista-Kind bringt frischen Wind

Gruß DaRedd aka The Red Dragon
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: ADOQuery SQL Parameter keine Übergabe

  Alt 7. Mär 2011, 12:15
Generell mal gefragt, wieso arbeitest du/man mit den Parametern? Mach man das so? Hätte man nicht einfach die Werte direkt beim Zusammenbaues des SQL-Statements da reinschreiben können?
Um Himmels willen nicht direkt reinbauen

Stichwort: SQL-Injection und Performance (um nur 2 zu nennen)

Ich vermute jetzt mal, dass die Verbindung der Parameter-Liste nicht so richtig passt.

Erzeuge auf der Form ein TADOQuery mit dem SQL-Statement und prüfe über den OI die Parameter.
Dann benutzt du genau diese Query in deiner Procedure, füllst die Parameter und lass die dann mal ausführen.

Und DeddyH hat auch recht, wenn alle Daten schon in der DB vorhanden sind, macht es keinen Sinn diese erst zum CLient zu holen und dann wieder zurück zur DB zu schicken. Das geht dann auch direkt in der DB
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 02:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz