WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 26.07.2005, 12:21   #1
chefkoch
superkeksi
 
Registriert seit: 08.03.2001
Ort: Wien
Alter: 41
Beiträge: 1.862


chefkoch eine Nachricht über ICQ schicken
Standard sql problem die zweite

also ich steh vor folgendem problem, dass ich gerne wissen möchte in welcher zeile sich ein eintrag befindet. sprich ich will zur zeilen nur von einem bestimmten datensatz kommen damit ich den ändern kann.
es müsst doch so eine funktion geben wie selectedindex bei den dropdownfeld oder?
chefkoch ist offline   Mit Zitat antworten
Alt 26.07.2005, 13:43   #2
Juro
Hero
 
Registriert seit: 24.04.2003
Alter: 53
Beiträge: 823


Standard

So wie es sich liest verwendest Du ein Tool, welches denn?

Ansonsten, wenn Du folgende Struktur hast:

tabelle1:
id | name | vorname
1 | Huber | Hans
2 | Muster | Franz
3 ....
...
230 | Miller | Karl
...

findest Du die Zeile mit "Miller":

select * from tabelle1 where id=230

Oder habe ich Deine Frage missverstanden? Wenn ja, kannst Du ein Beispiel schildern?
____________________________________
Software is like sex, it\'s better when it\'s free!
Juro ist offline   Mit Zitat antworten
Alt 26.07.2005, 14:05   #3
chefkoch
superkeksi
 
Registriert seit: 08.03.2001
Ort: Wien
Alter: 41
Beiträge: 1.862


chefkoch eine Nachricht über ICQ schicken
Standard

von der struktur passt es so wie du gesagt hast, aber ich brauch zum speichern der änderung von meinem datensatz die zeilen nr in der db. die ist nämlich nicht gleich wie die wertid, da schon manche einträge rausgelöscht wurden, aber nicht nachgefüllt worden sind.
chefkoch ist offline   Mit Zitat antworten
Alt 26.07.2005, 14:30   #4
Chefkoch_ico
Senior Member
 
Registriert seit: 21.12.2003
Beiträge: 102


Standard

Was ist den das für eine Datenbank, in der man gelöschte "Zeilen" aufüllen muss.

Mit Zeilennummern fängt man normalerweise in keiner Relationalen Datenbank etwas an. Nichtmal in Access.

CU
Chefkoch_ico ist offline   Mit Zitat antworten
Alt 26.07.2005, 15:03   #5
chefkoch
superkeksi
 
Registriert seit: 08.03.2001
Ort: Wien
Alter: 41
Beiträge: 1.862


chefkoch eine Nachricht über ICQ schicken
Standard

die lücken von der wertid hätten aufgefüllt werden solln und ned einfach gelöscht und die neuen am db ende angefügt.
chefkoch ist offline   Mit Zitat antworten
Alt 26.07.2005, 15:17   #6
rem996
Veteran
 
Registriert seit: 16.08.2001
Alter: 43
Beiträge: 293


rem996 eine Nachricht über ICQ schicken
Standard

hm

ich seh das problem nicht.. wenn du ohnehin einen unique schlüssel wie die ID im beispiel hast, kannst du jede zeile darüber identifizieren...

select id
from table
where name like "%mustermann%"

anschliessend

update table set name="neuername" where id = #idvonvorher

was willst du mit der zeile? das hat überhaupt nix mit der zeile zu tun wenn du einen wert updaten willst. schlagt mich nicht wenn das SQL so nicht genau stimmt, hab schon länger kein SQL mehr gebraucht

die id werte auffüllen macht ohnehin keinen sinn. die müssen nur unique sein und sind meistens ohnehin eine sequence bzw. auto_increment je nach db

was für eine db ist das überhaupt?

lg
rem996
rem996 ist offline   Mit Zitat antworten
Alt 26.07.2005, 15:39   #7
Chefkoch_ico
Senior Member
 
Registriert seit: 21.12.2003
Beiträge: 102


Standard

Gelöschte Primärschlüsselwerte wiederbenutzen verstößt gegen alle Gesetze der sauberen Datenbankprogrammierung.

Der Sinn dahinter bleibt mir schleierhaft. Normalerweise wird ein Primärschlüsselwert nirgends angezeigt, ausser es ist für eine einfache Identifiezierung erforderlich (Kundennummern, Matrikelnummern, Artikelnummern). Und selbst hierbei ists kein Problem, wenn mal ein Nummernloch vorkommt.

Wiederbenutzen gelöschter Werte kann da nur Probleme machen. Stell dir vor, jemand gibt eine Bestellung über eine Artikelnummer auf. Der Artikel wird gelöscht und an seine Stelle tritt ein anderer Artikel mit gleicher ID. Bei erneuter Bestellung würder er was völlig falsches bestellen.

CU
Chefkoch_ico ist offline   Mit Zitat antworten
Alt 26.07.2005, 22:02   #8
snowman
Inventar
 
Registriert seit: 26.09.1999
Beiträge: 2.569


Standard

Zitat:
Original geschrieben von Juro
So wie es sich liest verwendest Du ein Tool, welches denn?
So, wie es sich liest, hat er keine Ahnung von Datenbanken.

Also, wenn dein "wertid" eine primärer Schlüssel ist, kannst du damit jeden Datensatz identifizieren und brauchst keine Zeilennummer. ;-(

gruss,
snowman
____________________________________
MediaMarkt? Ich bin doch nicht blöd, Mann!

Vorsprung durch Technik

Lesen Sie keine Anleitungen, FAQs, Readme - Files. Reine Zeitverschwendung. In den Newsgroups und Foren gibt es genug kompetente Leute, die mit großer Geduld immer wieder dieselben einfachen Fragen beantworten. Völlig kostenlos noch dazu!
snowman ist offline   Mit Zitat antworten
Alt 27.07.2005, 07:33   #9
chefkoch
superkeksi
 
Registriert seit: 08.03.2001
Ort: Wien
Alter: 41
Beiträge: 1.862


chefkoch eine Nachricht über ICQ schicken
Standard

also so schaut mein code im moment aus
damit ändere ich den bestehenden datesatz in der db

int wert = Convert.ToInt32(TextBox1.Text);
DataSet dataSet41 = new DataSet();
SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter("select * from wkonf_tab", sqlConnection1);
SqlCommandBuilder mySqlCommandBuilder = new SqlCommandBuilder(sqlDataAdapter1);
sqlDataAdapter1.MissingSchemaAction = MissingSchemaAction.AddWithKey;
sqlDataAdapter1.Fill(dataSet41, "wkonf_tab");
DataRow myDataRow = dataSet41.Tables["wkonf_tab"].Rows[wert];
myDataRow["bez"] = Convert.ToString(TextBox2.Text);
myDataRow["einheit"] = Convert.ToString(TextBox3.Text);
myDataRow["zeiteinheit"]= Convert.ToInt32(TextBox4.Text);
myDataRow["letzte_aenderung_zeitbez"]= Convert.ToInt32(TextBox5.Text);
myDataRow["letzte_aenderung_person_id"]= Convert.ToInt32(TextBox6.Text);
myDataRow["ausserdienststellungszeitbez"]= Convert.ToInt32(TextBox7.Text);
myDataRow["art_id"]= Convert.ToInt32(TextBox8.Text);
myDataRow["interface_id"]= Convert.ToInt32(TextBox9.Text);
sqlDataAdapter1.Update(dataSet41, "wkonf_tab");

@snowman weisst du eine andere methode wie ich das update von meinem datensatz machen kann?
chefkoch ist offline   Mit Zitat antworten
Alt 27.07.2005, 09:04   #10
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

Hallo!

Du liest aus der Textbox1.Text anscheinend den Zeilenwert aus. Woher kommt dieser?
Ich würde anstatt des Zeilenwertes dort die ID speichern, dann statt:

SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter("select * from wkonf_tab", sqlConnection1);

"SELECT * FROM wkonf_tab WHERE ID=" & Textbox1.Text

schreiben. Dh. du lest nur die zu aktualisierende Zeile aus.

Zum Updaten für die Datarow nimmst du dann einfach die DataRow 0.
DataRow myDataRow = dataSet41.Tables["wkonf_tab"].Rows[0];


Wobei du statt dem ganzen c# zeug ein stinknormales SQL Update Statement machen könntest, aber jeder wie er will.

mfg Thomas

ps: Ich würde andere Namen für die Objekte und Variablen verwenden, sonst kennst dich irgendwann gar nimmer aus.
T.dot ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:27 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag