![]() |
Datenbank: ACCESS • Version: 2003 • Zugriff über: ADO
ADOQuery SQL Parameter keine Übergabe
Hallo Peopz,
kann mir einer weiterhelfen. Ich versuche mit einer ADOQuery eine Tabelle zu füllen:
Delphi-Quellcode:
Und bei ADOQuery1.Active sagt mir der Debugger:
procedure TForm2.New_Warenbestand(table1, table2: TADOTable); //Neuer Artikel in Warenbestand (KOMSA)
var i :Integer; begin ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('INSERT INTO Warenbestand(products_id, 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(:products_id, :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)'); i := TableStepBack(table2); ADOQuery1.Parameters.ParamByName('products_id').Value := i; //hier übergebe ich einen Wert, aber der Debugger mekkat! ADOQuery1.Parameters.ParamByName('external_id').Value := table1.FieldByName('ARTIKELNUMMER').AsString; ADOQuery1.Parameters.ParamByName('permission_id').Value := '0'; ADOQuery1.Parameters.ParamByName('products_owner').Value := '1'; . . . ADOQuery1.ExecSQL; ADOQuery1.Active := true; end; --------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt DatenZugriff.exe ist eine Exception der Klasse EOleException mit der Meldung 'Sie müssen einen Wert in das Feld 'Warenbestand.products_id' eingeben' aufgetreten. --------------------------- Anhalten Fortsetzen Hilfe --------------------------- Obwohl ich einen Wert an 'products_id' übergeben, nämlich i. Was ist hier faul? |
AW: ADOQuery SQL Parameter keine Übergabe
Und was "mekkat" der Compiler? Außerdem: entweder Active auf true oder Open/ExecSQL, aber nicht beides.
|
AW: ADOQuery SQL Parameter keine Übergabe
Dieses SQL-Statement liefert doch keine Daten zurück.
Es wird ausgeführt (der Name lässt es ja auch schon vermuten) mit
Delphi-Quellcode:
Ein
ExecSQL
Delphi-Quellcode:
ist dabei unsinnig und falsch, weil nun das Statement nochmals ausgeführt wird und ein ResultSet erwartet wird, was es aber nicht gibt.
Active := True
Ist auf der Spalte
Code:
auch noch ein Unique-Index dann rummst es dort auch noch.
products_id
Kontrollier doch mal die DB, denn die Werte sollten dann drinstehen (wenn es erst nach dem ExecSQL knallt) |
AW: ADOQuery SQL Parameter keine Übergabe
Danke für den Tipp, wie gesagt ich bekomme die Meldung:
--------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt DatenZugriff.exe ist eine Exception der Klasse EOleException mit der Meldung 'Sie müssen einen Wert in das Feld 'Warenbestand.products_id' eingeben' aufgetreten. --------------------------- Anhalten Fortsetzen Hilfe --------------------------- Der Compiler meckert nicht. |
AW: ADOQuery SQL Parameter keine Übergabe
Es lohnt sich übrigens immer ein Blick in die
![]() |
AW: ADOQuery SQL Parameter keine Übergabe
Hast Du die "Active"-Zeile denn jetzt rausgenommen?
|
AW: ADOQuery SQL Parameter keine Übergabe
Zitat:
|
AW: ADOQuery SQL Parameter keine Übergabe
Handelt es sich um einen Autowert? Den müsstest Du gar nicht übergeben.
|
AW: ADOQuery SQL Parameter keine Übergabe
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; |
AW: ADOQuery SQL Parameter keine Übergabe
Damit das überhaupt funktionieren kann, muss die Tabelle auf jeden Fall aktuell und nach der ID sortiert sein.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 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 by Thomas Breitkreuz