Sicker Geschrieben 18. Mai 2004 Geschrieben 18. Mai 2004 hallo, mich plagt mal wieder ein problem, diesmal geht es um den c builder 5 von borland und eine datenbankanbindung. ich habe eine primitive access-datenbank mit einer einzigen tabelle erstellt. nun soll ich einen client und einen server erstellen, der client soll datensätze an die datenbank, die an den server angeschlossen ist, versenden.ziel ist es, die vom client verschickten daten als neuen datensatz in die datenbank zu übernehmen. für den server habe ich einfach ein dbgrid-element erstellt und die datenbank angebunden, funktioniert auch gut. der client sollte mehrere edit-felder haben, die dort eingetragenen daten sollen an den server geschickt werden und als datensatz übernommen werden. da es zu aufwendig wäre jedes editfeld separat an den server zu schicken und in eine jeweilige spalte einzubinden stellte sich die frage nach sql. man kann doch alle daten aus allen editfeldern in einen sql-string packen, den verschicken, und dann innerhalb des servers diesen string als datensatz in die datenbank übernehmen, oder ? (-->also den string im server "auseinandernehmen" und auf die richtigen spalten aufteilen).gibt es da eine möglichkeit ? cu, sicker Zitieren
Goos Geschrieben 18. Mai 2004 Geschrieben 18. Mai 2004 mich plagt mal wieder ein problem, diesmal geht es um den c builder 5 von borland und eine datenbankanbindung. ich habe eine primitive access-datenbank mit einer einzigen tabelle erstellt. nun soll ich einen client und einen server erstellen, der client soll datensätze an die datenbank, die an den server angeschlossen ist, versenden.ziel ist es, die vom client verschickten daten als neuen datensatz in die datenbank zu übernehmen. für den server habe ich einfach ein dbgrid-element erstellt und die datenbank angebunden, funktioniert auch gut. der client sollte mehrere edit-felder haben, die dort eingetragenen daten sollen an den server geschickt werden und als datensatz übernommen werden. da es zu aufwendig wäre jedes editfeld separat an den server zu schicken und in eine jeweilige spalte einzubinden stellte sich die frage nach sql. man kann doch alle daten aus allen editfeldern in einen sql-string packen, den verschicken, und dann innerhalb des servers diesen string als datensatz in die datenbank übernehmen, oder ? (-->also den string im server "auseinandernehmen" und auf die richtigen spalten aufteilen).gibt es da eine möglichkeit ? cu, sicker Ui Du hast also quasi ein Eingabeformular mit Editfeldern. Ich verstehe nicht so ganz, was du mit deinem Server inklusive dbgrid machst. Ansich sollte es eher so sein, dass du nur das Eingabeformular hast und in der gleichen Anwendung eine Datenbankverbindung (ODBC oder ADO oder so) herstellst. Dann bastelst du aus den Werten der Eingabefelder ein entsprechendes SQL Statement und fuehrst das entsprechend aus. -> schon hast deinen neuen Datensatz in der Datenbank Fuer eine Access DB wuerde der SQL String etwa folgendermassen aussehen: INSERT INTO meineTabelle (nameSpalte1, nameSpale2) VALUES ("ersterWert", "zweiterWert") Ich hoffe einigermassen verstanden zu haben, was du anstellen willst Goos Zitieren
Sicker Geschrieben 19. Mai 2004 Autor Geschrieben 19. Mai 2004 Ich verstehe nicht so ganz, was du mit deinem Server inklusive dbgrid machst. Ansich sollte es eher so sein, dass du nur das Eingabeformular hast und in der gleichen Anwendung eine Datenbankverbindung (ODBC oder ADO oder so) herstellst. hallo ! vielen dank für deine antwort . ich tu mich manchmal schwer mit beschreiben, ich hab schon damit gerechnet, dass es schwer verständlich wird . nunja, der server ist mit einer datenbank verbunden. der server soll die datenbank mithilfe eines dbgrid-steuerelements anzeigen lassen. das funktioniert auch soweit ganz gut (also anbindung durch odbc und bde alles hervorragend). der client soll auf die datenbank zugreifen können, also datensätze hinzufügen können. die datenbank wird also von fern verwaltet (der server bräuchte das dbgrid im grunde nicht - da er im hintergrund läuft - wäre nur für einen administrator wichtig, vergiss das dbgrid ansonsten) das problem an sich ist folgendes: im client sollen mehrere editfelder sein (bezeichnung, artikelnr,...).nun will ich diese sachen als datensatz in der datenbank, die auf dem server liegt, haben. doch weiß ich nicht, wie man das macht...man könnte rein theoretisch alle editfelder einzeln an den server schicken.editfeld bezeichnung in die spalte bezeichnung packen, editfeld artikelnr. in spalte artikelnr. packen, etc...das wäre aber (denk ich mal) ressourcenverschwendung und größerer aufwand, da für einen einzigen datensatz alleine 5 (anzahl der editfelder auf dem client --> spalten in der datenbank) an-den-server-senden-vorgänge stattfinden würden. das ganze müsste doch mithilfe von sql alles in einem einzigen senden-vorgang gehen, indem man das ganze in einen sql-string packt ? also auf dem client die inhalte von allen editfeldern in einen sql-string, diesen dann an den server schicken, und der server bröselt diesen string dann auf die datenbank auf und packt die inhalte an die richtigen plätze der datenbank als 1 neuen datensatz. verstehst du so ungefähr ? wenn nicht, wundert mich nicht cu, sicker Zitieren
Goos Geschrieben 19. Mai 2004 Geschrieben 19. Mai 2004 Ja, so einigermassen hab ichs nun wohl verstanden, und dein SQL String schaut so aus, wie das Muster welches ich oben beschrieben hab. Du musst den halt unter C++ zusammenbauen und kannst ihn dann ueber deine Verbindung zur Datenbank ausfuehren. Somit hast dann auch die Daten aller Editfelder auf einmal verschickt. Also erzaehl nun mal, wo genau es noch haengt. Goos PS: Es waere uebrigens um einiges komplizierter, wenn du wirklich versuchen wuerdest, den Inhalt von jedem Editfeld einzeln in deine Tabelle zu bekommen Zitieren
Guybrush Threepwood Geschrieben 19. Mai 2004 Geschrieben 19. Mai 2004 Ich würde die Daten einfach alle zusammen in einen String schreiben (mit irgendetwas separiert) und diesen String an den Server schicken. Dieser soll dann aus dem String den SQL Befehl zusammenbauen und ausführen. Das halte ich für besser, als den SQL-Befahl an den Server zu schicken und dieser führt ihn einfach aus. So könnte jemand ganz einfach deine Datenbank manipulieren. Zitieren
Sicker Geschrieben 19. Mai 2004 Autor Geschrieben 19. Mai 2004 vielen dank, wo muss man den string denn einsetzen ? geht das mit dem update sql-steuerelement ? also wo muss man den INSERT INTO tblArtikel....-befehl einsetzen, damit in der datenbank eine neue zeile (--> datensatz) angehangen wird ? Zitieren
Goos Geschrieben 19. Mai 2004 Geschrieben 19. Mai 2004 Das ist jetzt der Part fuer Guybrush, der hat irgendwo doch noch son Borland Zeugs rumfahren (im Gegensatz zu mir) Goos Zitieren
Guybrush Threepwood Geschrieben 19. Mai 2004 Geschrieben 19. Mai 2004 Das ist jetzt der Part fuer Guybrush, der hat irgendwo doch noch son Borland Zeugs rumfahren (im Gegensatz zu mir) Höh? Wie kommst'n darauf? Ich benutz nur Visual C++ 6.0 Zitieren
Goos Geschrieben 19. Mai 2004 Geschrieben 19. Mai 2004 Aehmm ja arbeitstechnisch schon, abe ich dachte du haettest zuhause auch noch Borland rumfliegen Goos Zitieren
Guybrush Threepwood Geschrieben 19. Mai 2004 Geschrieben 19. Mai 2004 Hmm..hab mal grad nachgeschaut und da ist tatsächlich noch ne alte Version davon :floet: Allerdings hab ich keine Ahnung davon und kann Sicker in dem Fall leider nicht weiterhelfen Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.