Nach Hause
Top.Mail.Ru Yandeks.Metrika
Forum: "Grundlagen";
Aktuelles Archiv: 2002.01.08;
Herunterladen: [xml.tar.bz2];

Nach unten

ob in SQL leere Abfrageparameterwerte vorhanden sein dürfen Finden Sie ähnliche Zweige


shakh   (2001-12-03 20:29) [0]

Guten tag Es gibt eine Datenbank (access2000). Es gibt eine Benutzeroberfläche (. Exe). Die Kommunikation zwischen der Schnittstelle und der Datenbank erfolgt über ADO- und SQL-Abfragen. Es gibt eine Reihe von Formularen zum Ausfüllen verschiedener Datenbanktabellen. Gleichzeitig können einige Edit "s im Formular leer gelassen werden, dh sie enthalten keine Werte. Und jetzt lautet die Frage: Ist es möglich, über SQL eine Anforderung zum Hinzufügen (Aktualisieren) der Tabelle zu senden, wenn EINIGE FELDER der Anforderungsdaten LEER sind (field =" ")? Hier geht es hauptsächlich um Textfelder.
Natürlich gibt es die Möglichkeit, den Wert des Feldes auf "Leere" zu prüfen und dynamisch eine Abfrage zu erstellen. Wenn es jedoch 20-Teile solcher Felder gibt, ist dies eine recht umständliche Konstruktion.



Котелок   (2001-12-04 07:35) [1]

Es ist möglich.

Zum Beispiel:

Einfügen in Tabellenwerte (column1, column2) (: col1 ,: col2)

Und dann weisen Sie den Parametern einfach die Werte der Edit-s zu, die sein sollen.
Und wenn edit leer war, wird auch ein leeres Feld eingefügt.



shakh   (2001-12-04 19:31) [2]

Add-On ... nun, gut. und wenn dieselbe AdoQuery-Komponente für verschiedene Abfragen verwendet wird, kann die Anzahl der Parameter unterschiedlich sein. und wenn Sie so etwas wie AdoQuery1.SQL.Add ("Einfügen in Tabellenwerte (col1, col2)" + Edit1.Text + "," + Edit2.text + ")") schreiben; Bei leeren Werten in Edit1 oder Edit2 tritt dann ein Fehler auf, wenn ein Variablentyp ungültig ist oder das Feld keinen Standardparameter hat. (
und ich möchte nicht unbedingt ein paar statische Abfrageparameter ziehen



Delirium   (2001-12-04 20:08) [3]

Aber was hindert Sie daran, "leere" Werte zu übergeben, wenn Sie Felder haben, natürlich nicht Null?



Котелок   (2001-12-05 00:46) [4]

Wenn Sie Zeilen in Bearbeitungen haben sollten, dann versuchen Sie es wie folgt ...

AdoQuery1.SQL.Add ("In Tabelle einfügen (col1, col2)" + "" "+ Edit1.Text +" "" + "," + "" "+ Edit2.text +" "" + ") ");
Mit einem expliziten Hinweis, dass dies eine Zeichenfolge ist.
Obwohl durch Parambyname noch zuverlässiger ist.



shakh   (2001-12-05 02:08) [5]

und noch ein Zusatz.
Vielleicht habe ich schlecht erklärt, wo der Hund gewühlt hat%)
Es gibt eine Abfrage AdoQuery1.SQL.Add ("In Tabelle einfügen (col1, col2)" "" "" + Edit1.Text + "" "+", "+" "" + Edit2.text + "" "" + ")");
hier ist alles klar Wurde jedoch im Formular bei der Eingabe von Daten Edit1 (zum Beispiel) leer gelassen, dann crawlt Egor bei der Ausführung dieser Anfrage. und so möchte ich sie (von error "s) mit minimalen kosten loswerden.
Etwas wie ... values ​​(: col1 ,: col2) zu schreiben ist sicherlich gut, aber wenn es nur wenige Felder gibt und wenn es ungefähr 20-Teile gibt, dann erstelle alle diese Parameter im Objektinspektor und dann, ohne in ihrer großen Masse verwirrt zu werden Weisen Sie ihnen Werte aus Bearbeitungen zu - dies ist bereits eine Zahl mit Tricks.
Sie können Typprüfungen haften
if Edit1.Text <> "" then enable_field_to_query
Aber das ist völlige Perversion!



Котелок   (2001-12-05 03:33) [6]

Es ist nicht klar, warum Objekte im Inspektor erstellt werden.

Bei der Überprüfung auf leere Bearbeitung und dynamische Einbeziehung des Parameters in die Abfrage handelt es sich nicht um eine solche Perversion, sondern um ein völlig normales Phänomen, obwohl das Codieren mühsam ist.

Hier ist ein Beispiel:

sqlText: = "In Tabelle einfügen (";
wenn edit1.text <> "" dann
sqlText: = sqlText + "column1"
wenn edit2.text <> "" dann
sqlText: = sqlText + "column2"
delete (sqlText, length (sqlText), 1);
sqlText: = sqlText + ") values ​​(";
wenn edit1.text <> "" dann
sqlText: = sqlText + ": column1,"
wenn edit2.text <> "" dann
sqlText: = sqlText + ": column2,"
delete (sqlText, length (sqlText), 1);
sqlText: = sqlText + ")";

AdoQuery1.close;
AdoQuery1.SQL.clear;
AdoQuery1.SQL.Add (sqlText);
AdoQuery1.ExecSql;

Ich kann auch vorschlagen, im Konstruktor der Tabelle, in die Sie einfügen, auf Access zuzugreifen, und für alle Felder, die möglicherweise leer sind, den Parameter festzulegen, der die Eingabe von Leerzeilen ermöglicht. Und dann sollte die Überprüfung auf leere Felder verschwinden und Fehler sollten nicht geworfen werden.



Ra   (2001-12-05 14:03) [7]

Sie müssen nur eine solche Anfrage verhindern. Eine von zwei Möglichkeiten
1) überprüfen Sie vor der Ausführung, ob nicht alle Felder ausgefüllt sind - zeigen Sie eine Meldung an ...
2) oder sogar deaktivieren "pour control (höchstwahrscheinlich eine Schaltfläche), bis alle erforderlichen Daten eingegeben sind .. für diese .. bei allen Änderungen am OnChange-Ereignis hängen die folgenden Handler:

beginne Button1.Enable: = (Edit1.Text <> "") und (Edit2.Text <> "") und ... Ende;




NDeu   (2001-12-05 14:19) [8]

> Ra © (05.12.01 14: 03)
Eher:
beginnen
Button1.Enable: = (Absender als TEdit) .Text <> ""
end;
:)





Котелок   (2001-12-06 01:00) [9]

> Ra
Manchmal gibt es solche Aufgaben, wenn eine solche Anforderung einfach notwendig ist.

Ich selbst war mit diesem Problem konfrontiert, obwohl ich eine normale statische Abfrage mit 25-Feldern verwendete und die Tabelle die Erlaubnis hatte, Leerzeilen einzugeben.



Seiten: 1 ganze Branche

Forum: "Grundlagen";
Aktuelles Archiv: 2002.01.08;
Herunterladen: [xml.tar.bz2];

nach oben









Speicher: 0.59 MB
Zeit: 0.027 c
14-22378
Moderator
2001-11-08 07:51
2002.01.08
> Merilin


4-22499
Yus
2001-10-31 20:51
2002.01.08
FindWindow


1-22108
Michael
2001-12-19 19:10
2002.01.08
Langes Drucken auf Matrixdrucker


1-22265
Ser_Kham1
2001-12-17 16:10
2002.01.08
ListBox


6-22306
Maamed
2001-10-09 12:57
2002.01.08
Die Aktivierung des alten Fensters des Programms läuft 2-oh-Zeit!





Afrikanisch Albanien Arabisch Armenisch Aserbaidschanisch Baskisch Weißrusse Bulgarisch katalanisch Chinesisch (vereinfacht) Chinesische Tradition) kroatisch Tschechisch Dänisch Niederländisch Englisch estnisch Philippinisch Finnisch Französisch
Galicisch Georgisch Deutsch Griechisch haitian Creole Hebräisch Hindi ungarisch isländisch Indonesian irisch Italian Japanisch Koreanisch lettisch litauisch Makedonisch Malay Maltesisch Norwegisch
persisch Polnisch Portugiesisch Rumänisch Russisch serbisch Slovakisch Slowenisch Spanisch Suaheli Schwedisch Thai Türkisch Ukrainisch Urdu Vietnamesisch Walisisch Jiddisch Bengalisch bosnisch
cebuano Esperanto Gujarati Hausa Hmong igbo Javanisch kannada khmer Laotisch Lateinisch Maorisch Marathi Mongolisch nepali Pandschabi Somalisch Tamilisch Telugu Yoruba
Zulu
Английский Französisch Deutsch Italienisch Португальский Russisch Spanisch