Laden...
S
snoopy myCSharp.de - Member
IT-Systemelektroniker NRW Minden Dabei seit 19.05.2005 204 Beiträge
Benutzerbeschreibung

Forenbeiträge von snoopy Ingesamt 204 Beiträge

27.10.2010 - 17:48 Uhr

Hi,

ich habe ein kleines Problem. Und zwar möchte ich testen, ob meine COM Komponenten funktionieren.

Ich möchte ganz gerne eine Testanwendung schreiben, in der ich Word mittels COM aufrufe, so dass ich WORD "steuern" kann.

Kennt hier jemand ein kleines Tutorial, oder Beispielcode? ( Der Aufruf reicht mir hier vollkommen )

Danke.

19.02.2009 - 10:21 Uhr

mh.. hat niemand eine idee ?
vom prinziep her geht es ja rein um die logik. eine lösung in c# würde mir auch weiterhelfen 8)

18.02.2009 - 13:04 Uhr

Hallo,
ich habe eine kleine Frage zu einer Routine. Es geht nicht um C# oder .Net, sondern eine Interne Sprache einer Entwicklungsumgebung für erp systeme.

Es geht heir rein um die Logik.

Folgendes Problem. Ich habe eine Tabelle für Artikel

zur zeit wird die linenumber so ausgegeben.


linenumber  itemcode  itemdescription
1                 3456       artikel 1
2                 4543       artikel 2
                                einfacher text
4                 5454       artikel 3


ich möchte aber gerne das bei einer textzeile( da wo zur zeit keine linenumber steht) die linenumber nicht automatisch addiert wird.

das heißt es soll aso aussehen


linenumber  itemcode  itemdescription
1                 3456       artikel 1
2                 4543       artikel 2
                                einfacher text
3                 5454       artikel 3


Ich habe eine Methode, die bei RowOutput aufgerufen wird. Das bedeutet, jedesmal wenn eine Zeile hinzugefüg, oder gelöscht wird, die die tabelle refresht und für jede zeile wird die methode dcDocumentsOnRowOutput() aufgerufen

zur zeit sieht der code so aus.


If ( TreeControl.Columns.Find("LineNumber") <> Undefined ) Then
			strNumber = "";
			CurrRow = RowData;
			While True Do  
				if CurrRow._RowType <> 2 then
					strNumber = String(CurrRow.Parent.Rows.IndexOf(CurrRow) + 1) + strNumber;
				else
					strNumber = "";
				endif;
				CurrRow = CurrRow.Parent;
				If ( CurrRow = Undefined Or CurrRow._IsFirstRow = True ) Then
					Break;
				Else
					strNumber = "." + strNumber;
				EndIf;
			EndDo;
			
			RowAppearance.Cells.LineNumber.SetText(strNumber);
			RowAppearance.Cells.LineNumber.Align = HorizontalAlign.Right;
			RowAppearance.Cells.LineNumber.ReadOnly = True;
		EndIf;

Hat jemand eine idee, wie ich sinnvoll die logik anpassen kann, das die linenumber nicht addiert wird, wenn es eine textzeile ist?

Bei fragen zu Variablen oder so kann ich natürlich auskunft geben, aber der code müsste eigentlich selbsterklärend sein.

02.01.2009 - 11:31 Uhr

hatte die letzten Wochen nicht wirklich viel Zeit gehabt.
Aber habe mir die Lösungen mal durchgeschaut und ich empfinde es als ziemlich kompliziert für einen laien ^^

Eine einfachere Lösung gibt es nicht, oder?

Ist es denn möglich, wenn ich in meiner Hauptanwendung ein Ereigniss auslöse und der Clientthread abonniert das ereigniss und sobald das ereigniss eintritt, wird die methode aufgerufen? Würde dies klappen?

10.12.2008 - 21:10 Uhr

Guten Abend,

mein Problem steht darin, ich möchte gerne von einem Thread über hinweg auf einen anderen Thread eine Methode aufrufen. Hoffe das hat jeder verstanden 😁

Habe für jeden Thread eine Klasse erstellt.

Hintergrund der Anwendung:

Mainklasse startet thread für isdn handlunden, Klasse: ISDN

Mainklasse Startet thread für Networkserver, Klasse Networkhandler und öffnet einen TCP Port.

Networkhandler startet einen Thread, sobald sich ein Client verbindet, Klasse Clienthandler.
Mit der Klasse Clienthandler soll die kompeltte kommunikation mit dem Client ablaufen.

Der Networkhandler soll nur immer im listenmodus laufen und warten das sich clients verbinden.

Nun möchte ich entweder aus der Mainklasse heraus, allen Clients eine Nachricht per TCP schicken, oder aus der ISDN Klasse heraus. D.h. sobald ein anruf in der isdnklasse registriert wird, sollen alle Clients eine tcp nachricht erhalten.
Oder anderherum, sobald der client eine meldung an den server schickt soll die mainklasse, oder die isdn klasse den "Befehl" ausführen. Wie stelle ich dies nun am besten an?

folgender code erstellt mir den thread für den networkhandler


NetworkHandler nwhandler = new NetworkHandler(settings.serverport);
                Thread handler = new Thread(new ThreadStart(nwhandler.Start));
                handler.IsBackground = true;
                handler.Start();

folgender code ruft den Clienthandler auf



public void Start()
        {
            int clientNum = 0;
            while (true)
            {
                
                // Auf eingehende Verbindungsanforderung warten 
                // und einen für die Kommunikation initalisierten TcpClient zurückgeben. 

                TcpClient client = listener.AcceptTcpClient();

                // Ein neues Objekt erstellen, um diese Verbindung zu bearbeiten.
                clientNum++;
                ClientHandler handler = new ClientHandler(client, "Client " +
                    clientNum.ToString());

                // Dieses Objekt in einem anderen Thread ausführen.
                Thread handlerThread =
                    new Thread(new ThreadStart(handler.Start));
                handlerThread.IsBackground = true;
                handlerThread.Start();
                Clients.Add(handler);
                
            }
        }

Wie man sieht, ich füge die Clients alle einer arrayListe hinzu.
Nur wie greife ich z.b. per foreach schleife auf die client-handler zu und rufe eine publicmethode aus der Clienthandler Klasse auf?
Ich hoffe ihr habt mich verstanden 🤔

Danke für die Hilfe

30.10.2008 - 22:40 Uhr

wow, der tester ist ja echt klasse.
habe damit die straße gefunden.
aber hast du eine bessere idee, als das mit den regex zu machen?

30.10.2008 - 22:26 Uhr

Guten Abend,
ich versuche mich grad schwer in RegEx einzuarbeiten, bzw. eine html datei mit regex auseinander zu pflücken.

der wichtige Teil der html datei sieht so aus:


<SPAN id=invers0 style="LEFT: 10px; VISIBILITY: hidden; POSITION: absolute; TOP: 27px"></SPAN></SPAN></DIV>Ramstr.&nbsp;2,&nbsp;32427&nbsp;Minden<BR><INPUT type=hidden

Dort steht nun die Straße Ramstr. und die Plz 32427 und der Ort Minden.

Nun habe ich bei einem javamodul folgenden regex ausdruck gefunden.


repository.www.DasOertliche.de\:regexp.street\:value=([^,>]*)&nbsp;[^,>]*,&nbsp;[^<]*&nbsp;[^<]*<br/>


habe diesen regex ausdruck nun für mein c# projekt genommen.
udn auf meinen string, der den kompletten bodyteil der webseite enthält losgelossen.


HtmlDocument doc = webBrowser1.Document;
            HtmlElement elem = doc.Body;
            string html = elem.OuterHtml;

            Regex regex = new Regex(@"([^,>]*)&nbsp;[^,>]*,&nbsp;[^<]*&nbsp;[^<]*<br/>");

            Match m = regex.Match(html);
            string street = "";
            if (m.Length != 0)
                street = m.Value;

            MessageBox.Show(street);

            StreamWriter sw = new StreamWriter(@"d:\test\output.html");
            sw.WriteLine(html);
            sw.Flush();
            sw.Close();


Wie man sieht, versuche ich über die messagebox die straße auszugeben. die Ausgabe bleibt leer.

Am ende lasse ich mir nochmal die htmlseite in eine testdatei schreiben. Dies klappt einwandfrei, die webseite lässt sich später "offline"betrachten, wo dann die straße auch drin zu finden ist, siehe oberer html auszug.

was ist an dem regex falsch?

20.10.2008 - 21:21 Uhr

Habe das auch mal versucht, weil es mich auch interessiert.



        private void button1_Click(object sender, EventArgs e)
        {
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www1.dasoertliche.de/Controller?form_name=search_inv&ph=05718294560");
            req.Method = "POST";
            WebResponse response = req.GetResponse();

            // den korrekten stream laden
            Stream dataStream = response.GetResponseStream();
            // stream via streamreader laden
            StreamReader reader = new StreamReader(dataStream);
            // den Inhalt lesen
            string responseFromServer = reader.ReadToEnd();
            // den inhalt darstellen
            textBox1.Text += responseFromServer;
            // streams schließen
            reader.Close();
            response.Close();
        }

allerdings, wenn ich die telefonnummer in der url mitangebe, bekomme ich nur
folgende html ausgabe


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>&Ouml;TB-Relaunch Exception</title>
</head>
<body>
<br/>
&Ouml;TB-Relaunch Exception:
<br/>
For input string: ""</body>
</html>

nehme ich die telefonnummer raus, erhalte ich die komplette webseite, wo ich dann die nummer eingeben kann.

wie muss ich den webrequest denn nun richtig formulieren?

Wenn man die url mit der telefonnummer so im browser angibt, erhält man einen gültigen eintrag.

Wichtig, die Telefonnummer ist frei ausgewählt und vom zufall ausgewählt.

13.10.2008 - 21:49 Uhr

ah habs gefunden. Problem war das rechte problem...

13.10.2008 - 21:17 Uhr

autsch, mh ok, ja verweis hinzugefügt. nun lässt er sich installieren.
Aber wenn ich ihn starte, beendet er sich wieder sofort.

kommentier ich die zeile system.serviceprocess.... nciht aus, lässt er sich nichtmal starten.

muss ich einen extra thread für den service erstellen ?
Oder wieso läuft der service nicht weiter?

mein dienst sieht so aus


 public partial class main : ServiceBase
    {
        public main()
        {
            InitializeComponent();
            //System.ServiceProcess.ServiceBase.Run(new main());
        }

        protected override void OnStart(string[] args)
        {
            StreamWriter sw = new StreamWriter(@"c:\text.txt");
            sw.WriteLine("Dies ist ein test");
            sw.Flush();
            sw.Close();
        }

13.10.2008 - 20:34 Uhr

Guten Abend, ich versuche einen Windows Service in C# zu entwickeln und wollte dieses nun auf einem XP System installieren.

.Net 2.0 mit Visual Studio 2005 Pro.

Habe das Tutorials versucht, aber sobald ich den Namespace using System.Configuration.Install; einbinde, erhalte ich die Fehlermeldung, das der Namespace nicht gefunden werden konnte. Somit bekomm ich meine exe nicht mit installutil.exe installiert.

was fehlt mir ?

01.08.2008 - 12:40 Uhr

Guten Morgen,
ja genau so ein praktisches Beispiel hab ich gesucht, ich glaub ich war sogar auf der Seite aber hatte nicht bis nach unten zu dem Beispiel gescrollt 🤔

Aber wie ich in dem Beispiel sehe, muss ich mich ja immernoch um die Select Abfrage kümmern. Eigentlich wollt ich mir das ja ersparen, da ich teilweise Selectabfragen habe, die verdammt lang sind.

Oder hab ich mich da irgendwie voll vertan?

PS: Wozu benötige ich eigentlich noch den TableAdapter? Oder ist dieser nur notwendig um die Daten auch zurück in die DB zu schreiben ?

30.07.2008 - 21:49 Uhr

deinen o/r mapper möcht ich nicht nutzen, das ist mir zu umständlich.. Tut mir leid.

Mein Bekannter war von den ADO Techniken ganz angetan, und das ist sicherlich auch für mich sehr interessant.

Aber was gehört alles vor die bindingsource?

Also ich erstelle mir einen connection string, öffne die Datenbank und dann ?

30.07.2008 - 20:32 Uhr

verwendetes Datenbanksystem: MS SQL 2005

Guten Abend,
ich habe heute mit einem bekannten über die Programmierung mit Datenbanken gesprochen.

Ich mache es zur Zeit noch händich, d.h. ich lege mit einen SQLDataReader an und lese die Daten aus der DB, verarbeite sie und gebe sie aus.

Mein bekannter meinte, er nutzt die databindings,datatabels usw. Allerdings nicht die, die vom VisualStudio Designer generierten, sondern erstellt sich diese händisch in der *.cs Datei und weißt sie dann den Controls zu.

Leider steht in meinem schlauen Buch nur der Weg über den Designer, aber hier generiert VS ja so wahnsinnig viel Code was nicht genutzt wird, das man dort nicht mehr durchsteigt.

Kann mir jemand eine Beschreibung nennen, wo die manuelle Vorgehensweise mit den Databindings zu den Controls erklärt wird. Oder hier ein paar Code Beispiele Posten?
Dankeschön

Liebe Grüße

14.07.2008 - 12:52 Uhr

und wo mach ich das?

14.07.2008 - 09:58 Uhr

verwendetes Datenbanksystem: MS SQL 2005 Express

Guten Morgen,
ich habe meine Anwendung nun soweit fertig, das sie beim Kunden installiert werden kann. Allerdings ist mir eben aufgefallen, dass ich mit dem Managementstudio nur eine Sicherung der Datenbank machen kann.

Ich möchte allerdings nur die Struktur exportieren, nicht aber die Daten.
Wie kann ich dies nun am gescheitesten lösen?

10.07.2008 - 16:13 Uhr

danke, das ja cool mit den aliasen.

Nein ich bin mir nicht sicher bzgl. dem INNER JOIN.

10.07.2008 - 15:45 Uhr

habe noch ein kleines problem. In meiner auftragstabelle habe ich nun einmal
vonFahrzeug_id und zuFahrzeug_id

beide verweisen auf die tabelle fahrzeug

es sind jeweils unterschiedliche fahrzeug_ids in den spalten.

wie kann ich zweimal nen JOIN auf die tabelle fahrzeug machen?

10.07.2008 - 15:06 Uhr

mh ich kenne den unterschied zwischen left join und inner join nicht. was ist der vorteil? bzw. was ist der vorteil ein JOIN zu nutzen, oder eben kein JOIN zu nutzen?

10.07.2008 - 14:52 Uhr

verwendetes Datenbanksystem: <MS SQL 2005>

Hi,
ich möchte gern ein SELECT JOIN über 3 Tabellen machen.

Meine Haupttabelle auftrag(auftrag_id,kunde_id,fahrzeug_id)

tabelle zwei kunde(kunde_id,name)
tabelle drei fahrzeug(fahrzeug_id,kennzeichen)

möchte nun mit einem Select den namen des kunden auslesen und das kennzeichen des fahrzeuges.

Wie mache ich das? Mit zwei Tabellen mache ich es zur zeit so.


SELECT auftrag.auftrag_id,kunde.name FROM auftrag INNER JOIN kunde ON kunde.kunde_id=auftrag.kunde_id

Nur eben wie gehts bei 3 Tabellen?

09.07.2008 - 13:19 Uhr

Hi,

kleine Frage. Wie kann ich schnell und sinnvoll die Benutzeringaben in TextBoxen/Comboboxen kontrollieren.
Wichtig ist eigentlich in erster Linie nur, das diese gefüllt sind.
Ich denke mal immer if(textbox.text!="") ist viel zu aufwendig und sicherlich gibts da ne sinnvollere alternative.

04.07.2008 - 14:03 Uhr

Autsch ich hab den Fehler gefunden.
Ich habe der combobox items hinzugefügt. Und bei AutoCOmplete auf die Liste verwiesen.
Habe jetzt gleichzeitig die AutoCOmpleteCustomSource befüllt und nun funktioniert es einwandfrei.

04.07.2008 - 13:08 Uhr

also ich lasse die liste aus einer select anfrage einer datenbank füllen. Wähle dann direkt einen von den 4 einträgen aus und drücke irgendwo auf nen button wo dann die if abfrage kommt. ich habe nichts an dem text geändert.

und trotzdem bekomm ich ein false

04.07.2008 - 12:35 Uhr

leider funktioniert das nicht.


if (straße_comboBox.AutoCompleteCustomSource.Contains(straße_comboBox.Text) == true)
            {
                MessageBox.Show("jeha");
            }
            else
            {
                MessageBox.Show("dumm");
            }

der wert steht in der autocomplete liste drin den ich ausgewählt habe, aber trotzdem bekomme ich ein false zurück und dementsprechend ein dumm ausgegeben. Wieso?

30.06.2008 - 16:14 Uhr

nein, ich hab den fehler gefunden.
habe den construktor überschrieben und

InitializeComponent();

vergessen.

nun gehts.

30.06.2008 - 16:02 Uhr

haben alles andere namen.. das kann es also auch nicht sein.

wie gesagt, im designer werden sie einwandfrei angezeigt, nur eben im programm nicht.

30.06.2008 - 15:33 Uhr

clean hat leider nichts gebracht.

30.06.2008 - 15:20 Uhr

Hi,

ich habe ein Usercontrol erstellt mit ein paar text und comboboxen. Diese controls habe ich auf protected gesetzt, damit ich diese in der geerbten form verschieben kann.

habe dann also eine neue klasse erstellt und erbe von dem oben beschriebenen usercontrol.

die geerbten controls wie textbox und combobox werden einandfrei angezeigt und funktionieren auch so wie sie sollen.

allerdings wenn ich auf das geerbte usercontrol per designer neue textboxen oder labels ziehe ( diese werden im designer angezeigt) aber nachdem ich die anwendung erfolgreich kompiliert habe, tauchen diese nicht auf dem usercontrol auf, sondern nur die geerbten controls.

jemand eine idee was das sein kann?
VS hab ich mehrmals neugestartet und das projekt neu kompiliert.

26.06.2008 - 13:43 Uhr

danke.

26.06.2008 - 12:41 Uhr

Hi,

ich habe eine Combobox. Die Itemlist fürs autocomplete fülle ich mit daten aus einer SQL Datenbank.
Das ganze geht um straßen. Wenn nun die straße nicht vorhanden ist, kann man sie in der combobox eingeben.

Wie kann ich nun schnell und einfach überprüfen, ob die straße schon vorhanden war, oder sie neu eingegeben wurde ?

17.06.2008 - 10:19 Uhr

autsch bin ich blind. Aber ja genau das habe ich gesucht. Danke.

Wie einfach 🙂

17.06.2008 - 09:46 Uhr

hi.
Also ich meine den Karteireiter oben der Tabpage.
Siehe oberstes Bild in diesem Link

http://www.codeproject.com/KB/tabs/firefoxtabcontrol.aspx

Die Tabreiter sind ja nun länger als normal. Diese länge hätte ich auch gerne. Allerdings finde ich in dem Sourcecode von dem Projekt nicht, wie die das dort machen.

16.06.2008 - 17:55 Uhr

also zur zeit erbe ich von eigentlichen tabcontrol und überschreibe die ondrawItem methode.

allerdings habe ich noch keinen weg gefunden, die größe zu verbreitern.

Andere Tabpages auf codeproject erben ja auch von tabcontrol und schreiben nicht alles neu. nur blick ich da nicht ganz durch, wie diese das machen.

16.06.2008 - 17:41 Uhr

Hallo,
ich arbeite ja zur Zeit an einer erweiterten TabPage.
Habe nun noch folgendes. Ich möchte oben den "Reiter" verlängern. D.h. zur Zeit ist es ja so, das der reiter dynamisch ist. Ich möchte diesen nun gerne auf 200pixel fest einstellen. Sowie blau hinterlegen. Wie und wo mache ich das?

16.06.2008 - 14:03 Uhr

ah ich habs. Man darf nicht in OnPaint malen, sondern in OnDrawItem.

Aber warum nicht in OnPaint?

16.06.2008 - 13:05 Uhr

wo muss ich das setzen? in der neuen klasse, die von tabcontrol erbt, oder im dem programm,was das neue tabcontrol nutzt?

Bei dem programm was dastabcontrol nutzt gibt es DrawMode, aber man kann nur auf Normal oder OwnerDrawFixed stellen. Bei letzterem ist ebenfalls nix zu sehen, und zudem sind noch die beschriftungen der tabs verschwunden.

16.06.2008 - 12:40 Uhr

mh.. aber warum wird in meinem fall nichts gezeichnet ? müsste nicht ein rectangle auf dem tabcontrol irgendwo auftauchen ? ^^

16.06.2008 - 11:38 Uhr

Guten Morgen,

ich möchte gerne das TabControl erweitern. Und zwar möchte ich rechts oben einen Button mit einem X haben, womit ich das aktuelle Tab schließen kann. So wie im Visual Studio 2005.

Habe nun ein eigenes Projekt erstellt ( usercontrol ) und von tabcontrol geerbt und OnPaint überschrieben.

Nun möchte ich natürlich in dem Bereich Zeichnen. Allerdings passiert rein gar nichts.

Klar könnte ich eins von Codeproject nehmen, aber ich möcht es ja selbst lernen 🙂

Mein Code sieht so aus.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace oftecstabcontrol
{
    public partial class oftecstabcontrol : TabControl
    {
        public oftecstabcontrol()
        {
            InitializeComponent();
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            Graphics g = e.Graphics;
            Rectangle rect = new Rectangle(100, 200, 20, 20);
            g.FillRectangle(new SolidBrush(System.Drawing.Color.Blue), rect);
            g.DrawRectangle(new Pen(Color.Blue), rect);
                      

        }
    }
}

Warum passiert nix? zeichne ich vielleicht im Hintergrund?

13.06.2008 - 16:42 Uhr

das habe ich auch erst gedacht, aber msg ( CapiMessage) ist doch schon initialisiert, da ich ja mit msg.CallingPartyNumber mir die Nummer auslesen kann, wenn jemand anruft. Nur eben die Methode lässt sich nicht aufrufen? wie kann das dann kommen?

13.06.2008 - 14:45 Uhr

[EDIT]Abgeteilt von CAPI-Wrapper[EDIT]

ich komme damit irgendwie nicht ganz zurecht.

Mein code sieht so aus:


using Computopia.CAPI;

namespace capitest
{
    public partial class Form1 : Form
    {
        private delegate void CallHandler(CapiMessage msg);
        private Capi capi;
        public Form1()
        {
            InitializeComponent();
            capi = new Capi();
            capi.Handlers += Handler;
        }

        private void Handler(CapiMessage msg)
        {
           
            if (msg.Plci != 0)
            {
                MessageBox.Show(msg.CallingPartyNumber);
                msg.connectResponse(msg.Plci, 2);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
           
        }
    }
}


Wenn nun ein anruf rein kommt, wird die nummer angezeigt, aber der anruf wird nicht abgewiesen, sondern ich bekomme vom debugger eine fehlermeldung das ich eine null referenz habe.

Was mache ich falsch?

07.06.2008 - 10:04 Uhr

da gibts viele Ansätze.
Viele TK Anlagen bieten kleine Tools für den PC. Kommt aber auf den Hersteller und die Anlage an.

Was anderes wäre z.b. das programm PowerISDNMonitor. Das installierst du auf einem pc wo eine isdn karte ingebaut ist und jede nummer wird dann dort protokolliert.

29.05.2008 - 13:52 Uhr

Hallo.

Wie meint ihr das mit einer Tabelle "Adressen"?

Für Kunden,Fahrer, Krankenkassen eine Tabelle?

Nur das geht ja nicht, da ja z.b. bei der krankenkasse teilweise ganz andere felder benötigt werden als bei fahrer bzw. kunden.

Also Zugreifen tu ich auf die Tabellen händisch per Select,Update,Insert.

Genau Fremdschlüssel das ist das Stichwort, aber wie benutze ich diese, bzw. wie funktioniert das?

Wenn ich z.b. das feld straßen_id als fs deklariert habe aus der kundentabelle, was auf die ID von straßen verweißt.

und ich dann ein select * from kunden mache, erhalte ich dann die id von straßen oder erhalte ich dann den namen der straße ?

Edit:
@goose. das mit den 1:n und n:m beziehungen, ich erinner mich noch schwach an meine Ausbildungszeit. Da hab ich das thema mehr als oft durchgekaut... aber jetzt in der Praxis das nach einigen Jahren anzuwenden ist echt nich einfach ^^

29.05.2008 - 12:45 Uhr

verwendetes Datenbanksystem: MS SQL 2005 express

Hallo, ich habe folgende Frage über das DB Design.

Ich habe eine tabelle Kunden, Krankenkassen, Fahrer.

In allen Tabellen gibt es nun ein feld für straße plz und ort.

zur zeit hab ich es so überlegt, das ich eine weitere tabelle mache

straßen und orte

straßen hat dann als primary key eine hochlaufende zahl und als zweites feld den namen der straße.

orte hat als primary key die plz und ein weiteres feld name.

so nun mache ich es so, das ich bei kunden,krankenkassen,fahrer ein feld gemacht habe, straßen_id und plz.

straßen_id und plz fülle ich zur zeit noch manuell mit select id from straßen where name=@straße

und trage die id dann bei den kunden ein

das gleiche dann natürlich auch für die plz.

wie kann man dies hier einfacher designen, das ich nicht erst nen select auf straßen und orte machen muss um die id zu bekommen und die dann bei den kunden einzutragen?

Kann ich hier nicht mit den beziehungen(relationen) arbeiten? Nur wie geht das?
Kann mir da jemand weiterhelfen? ( MS Studioexpress ) nutz ich für das db design.

07.05.2008 - 15:36 Uhr

mh, dies ist wirklich viel übersichtlicher. Danke.

Macht es eigentlich Sinn, eventuell sogar mit DataSource zu arbeiten?
Wobei man ja bei einfachen Texteingabefeldern keine DataSource zuweisen kann, oder gibts da ein Workaround ?

07.05.2008 - 15:13 Uhr

was für Parameter meint ihr denn?

07.05.2008 - 14:41 Uhr

das script sieht so aus


USE [taxidahl]
GO
/****** Objekt:  Table [dbo].[benutzer]    Skriptdatum: 05/07/2008 14:39:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[benutzer](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[name] [nvarchar](max) COLLATE Latin1_General_CI_AS NOT NULL,
	[password] [nvarchar](max) COLLATE Latin1_General_CI_AS NOT NULL,
	[rechte] [nvarchar](max) COLLATE Latin1_General_CI_AS NOT NULL,
 CONSTRAINT [PK_benutzer] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]


das insert statement



cmd.CommandText = "INSERT INTO benutzer VALUES(" + text_benutzer.Text + "," + text_kennwort.Text + "," + rechte + "";


aber wenn ich auch im management studio datein einfügen möchte, bekomm ich den gleichen fehler, dass id nicht null sein darf.

07.05.2008 - 11:37 Uhr

bei identitätsspezifikation steht

(ist Identity) = JA
ID schrittweite = 1
ID Startwert = 1

aber er erhöhte trotzdem nicht, wenn ich daten per INSERT eintragen will.

06.05.2008 - 18:11 Uhr

Guten Abend,
ich habe in meiner DB eine Tabelle angelegt.

id = int
name = nvarchar(max)

id ist als primary key markiert.

Allerdings wenn ich nun mit INSERT INTO ... daten in meine DB eintragen will, wird id nicht gesetzt. d.h. die autoincrement funktion klappt nicht.

Wie lege ich die Autoincrement Funktioner für id im SQL 2005 ManagementStudio an ?

05.05.2008 - 17:06 Uhr

mh stimmt, damit gehts. hab bsi jetzt immer mysql als db genutzt, da ging es mit text einwandfrei.

Dankeschön.

05.05.2008 - 16:22 Uhr

verwendetes Datenbanksystem: MSSQL 2005 express

Hallo,
ich habe folgendes merkwürdiges Problem.
Ich erhalte folgende Fehlermeldung


Die Datentypen text und varchar sind im equal to-Operator inkompatibel.

bei folgender select abfrage


SqlCommand cmd = new SqlCommand("SELECT password,rechte FROM benutzer WHERE name = 'Administrator'",m_con);
            SqlDataReader reader = cmd.ExecuteReader();

ist doch mehr als merkwürdig.

Aso die Spalte hat als wert text, sowohl password,reche und name sind als wert text.