Autor Beitrag
curtiss
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 59



BeitragVerfasst: So 22.10.06 16:57 
hallo, ich wollte fragen ob mir jemand sagen kann, wo ich diese datei herbekomme.
Mein Compiler spuckt mir bei versuch ein Package zu Installieren die Fehlermeldung:
"[Fataler Fehler] direct_mysql.dpk(30): E2202 Package '_grids' wird benötigt, konnte aber nicht gefunden werden" aus!

Alternativ würde ich auch noch gerne Wissen ob ich mit meiner Delphi 2005 PE version, die möglichkeit habe, mehrere Datensätze aus einer SQL-Datenbank in ein Memo Feld zu schreiben, ich will das ergebnis da einfach reinwerfen, formatieren kann ich kann das dann später.

Und noch was ^^
Was wäre die einfachste möglichkeit, datensätze in eine Datenbank zu schreiben und wieder herauszulesen..ich habe jetzt MySQL-Direkt benutzt, allerdings werde ich dort schon von den möglichkeiten überhäuft :)
Ich möchte einfach nur SQL Querys einlesen bzw. ergebnisse durch querys ausgeben lassen. z.B.

abfrage:='SELECT bla FROM ...'
memo1.lines.add(mysql_query(abfrage));

das währe natürlich das einfachste...aber so in der richtung halt. Wäre nciht schlecht wenn es tatsächlich so eine Methode gibt :)

mfG
Curtiss


Moderiert von user profile iconGausi: Topic aus VCL (Visual Component Library) verschoben am Mo 23.10.2006 um 11:48
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: So 22.10.06 16:59 
Ich weiß nicht was für eine Unit _grids ist aber es bleibt anzumerken, daß D9PE die Datenbankunterstützung fehlt.

_________________
Markus Kinzler.
gsmgrufti
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 22


Delphi 7 Prof, BDS2006 rof
BeitragVerfasst: Di 24.10.06 17:06 
Ne, ne
die braucht man nicht
in der
direct_mysql.dpk
_grids
entfernen (hatte ich vergessen rauszunehmen)

in der
direct_mysql.inc
gucken
Zitat:

{$Define UVGRID}
{this will actually include Uwes enhanced Tstringgrid if available}

den Punkt setzen oder die Grid installieren (liegt unter 3dparty)

Hatte ich mal hier gepostet:
Dsdt-Posting

Ist eine einfache Komponente für
Directsql

Nachtrag:
das mit der Abfrage geht dann z.b. so:
directmysql.sendcmd('select.....',true,memo1.lines);

du hast allerdings auch die Möglichkeit das direkt in ein Stringgrid schreiben zu lassen
Danny W.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 296

Windows XP, WIN 2000
Delphi 2005 PE
BeitragVerfasst: Do 26.10.06 08:35 
vielen dank, ich habe das gerade einmal ausprobiert. ich habe die DB komponente auf meine Form gezogen, die daten eingegeben usw. Was mir als erstes aufgefallen ist, gibt es keine Connect funktion?

auf jeden fall funktioniert es bei mir nicht richtig:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
var
befehl: string;
begin
  befehl := 'SELECT `user`.`name` , `user`.`passwort` , `user`.`email` , `user`.`homepage` FROM `user` ORDER BY `user`.`id` DESC LIMIT 0 , 30';
  db1.sendcmd(befehl,true,memo1.lines);
end;



Zitat:

[Fehler] Unit1.pas(33): E2197 Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden



mfG


Zuletzt bearbeitet von Danny W. am Do 26.10.06 10:38, insgesamt 1-mal bearbeitet
gsmgrufti
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 22


Delphi 7 Prof, BDS2006 rof
BeitragVerfasst: Do 26.10.06 08:43 
Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
 if directmysql.Connect2MysqlDB('localhost','root','','mysql',3306,s) then
 begin
 directmysql.Getdata2grid('select * from user',StringGrid,True,s,true,true,true);
 directmysql.DisConnectMysqlDB(s);
 end;
 Button1.Caption:=s;
end;


in der directmysql4x.pas stehen die Funktion/Prozeduren und Properties
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
   function Connect2Mysql(server,user,passwd:string;port:cardinal;var results:string):boolean;
    function Connect2MysqlDB(server,user,passwd,database:string;port:cardinal;var results:string):boolean;
    function DisConnectMysqlDB(var results:string):boolean;
    function select_db(database:string;var results:string):boolean;
    function create_db(database:string;var results:string):boolean;
    function Drop_db(database:string;var results:string):boolean;
    function change_user(UserName,passwd,database:string;var results:string):boolean;

    function sendcmd(cmd:string;useheader:boolean;var results:TStrings):boolean;

    function Getdata2grid(cmd:string;var Grid:tstringgrid;useheader:boolean;var results:string;doshow,adjustcols,adjustrows:Boolean):boolean;
   {$IFDEF UVGRID}
    function Getdata2UVgrid(cmd:string;var Grid:tUVstringgrid;useheader:boolean;var results:string;doshow:Boolean):boolean;
   {$ENDIF}
    function TableLoadfromSERVERFile(Tablename,filename:string;separator:char;IgnoreLines:integer;var Results:string):boolean;
    function TableSaveToSERVERFile(Tablename,filename:string;separator:char;var Results:string):boolean;

    function TableSaveToFile(Tablename,filename:string;separator:char;useheader:boolean;var Results:string;doshow:Boolean):boolean;
    function TableLoadfromStringlist(Tablename:string;Strings:Tstrings;separator:char;IgnoreLines:integer;clearbefore,checkchar:boolean;var Results:string):boolean;
    function TableLoadfromFile(Tablename,filename:string;separator:char;IgnoreLines:integer;clearbefore,checkchar:boolean;var Results:string):boolean;

    function ClearTable(Tablename:string;var Results:string):boolean;
    function Showfields(Tablename:string;var FIELDS:Tstringgrid;var results:string;doshow,adjustcols,adjustrows:Boolean):boolean;
    function Listfields(Tablename:string;var FIELDS:Tstrings;var results:string):boolean;
    function Showtables(DBname,wildcard:string;var tables:Tstringgrid;var results:string;doshow,adjustcols,adjustrows:Boolean):boolean;
    function Listtables(DBname,wildcard:string;var tables:tstrings;var results:string):boolean;
    function ShowDatabases(searchstring:string;var Databases:tstrings;var results:string):boolean;
    function reconnect(var results:string):Boolean;
    function refresh(var results:string;options:LongInt):Boolean;
    function dump_debug_info(var results:string):Boolean;
    function killPid(var results:string;pid:LongInt):Boolean;
    function ping(var results:string):Boolean;
    function shutdownServer(var results:string):Boolean;
    function Status(var results:string):Boolean;
    function Listprocesses(var processgrid:Tstringgrid;var results:string;doshow,adjustcols,adjustrows:Boolean):boolean;
    function KillLongTimeprocesses(maxsec:longint;var results:string):boolean;
    function ShowDbTree(host:String;var Tree:TTreeView;var results:string):boolean;
    function mysql_SQL_restore(dbhost,dbuser,dbpwd,filename:string;port:integer;var messages:tstrings):boolean;
    function BACKUP_DB(database,dbhost,dbuser,dbpwd,dbdb,filename:string;port:integer;var messages:tstrings):boolean;
Danny W.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 296

Windows XP, WIN 2000
Delphi 2005 PE
BeitragVerfasst: Do 26.10.06 08:46 
dankesehr =) allerdings möchte ich den kram doch in einem memo feld haben ^^
da brauch ich Getdata2grid doch nicht, oder?
wie löse ich das?

//EDIT
hab mir das nochmal genauer angeschaut! ich finde das ist wirklich eine geniale Lösung zur Abfrage der Datenbank =)
Mir ist nur gerade spontan aufgefallen, das der inhalt beim sendcms ja als strings übergeben wird ^^ vorher garnicht gesehen..obwohl es ja eigentlich sinn ergibt *schäm* ... allerdings kann ich durch einen zwischengespeicherten String, einem memo1.assign() oder einem memo1.lines() keine dieser Tstrings ausgeben lassen :/

//EDIT
Hab nochmal genau nachgeschaut. Memo.Lines ist als Tstrings deklariert, genau wie der ausgabewert von sendcmd. Komischerweise funktioniert das nicht so ganz richtig :/

//EDIT
Damit keine Missverständnisse auftauchen, Curtiss ist der Acc. von einem Kumpel, von dem ich aus geschrieben habe :) Der Thread wurde quasi von mir erstellt :)

mfG
gsmgrufti
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 22


Delphi 7 Prof, BDS2006 rof
BeitragVerfasst: Do 26.10.06 13:41 
Dann machs einfach so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
ts:tstrings;
.
.
  ts:=tstringlist.Create;
  db1.sendcmd(befehl,true,ts);
  memo1.lines.Assign(ts);
  ts.free;


//Nachtrag:
Sendcmd hatte ich eigentlich nur für Deletes und updates so vorgesehen.
Rückgabe ist da mit Datum und Uhrzeit vorweg.
Für selects ist die Grid sowieso besser, weil du da auf die einzelnen Felder einfach zugreifen kannst.
Die Grid muss ja nicht visuell sein..........
Danny W.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 296

Windows XP, WIN 2000
Delphi 2005 PE
BeitragVerfasst: Do 26.10.06 14:03 
ernsthaft? das wäre für mich neu und auch ziemlich interessant..wie kann ich denn eine 'getäuschte' grid erstellen und pflegen?

//EDIT
Vielen dank! ich habe es nun so geschafft!

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, directmysql4x;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit2: TEdit;
    Memo1: TMemo;
    label1: TLabel;
    Memo2: TMemo;
    Button2: TButton;
    db1: Tdirectmysql;
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
sl : tstrings;
i  : integer;
begin
    memo1.clear;
    sl := TStringList.Create;
    sl.Delimiter := ','; //Splitter
    sl.DelimitedText := memo2.text; //der zu splittende text
    edit2.text:=inttostr(sl.count);
   
  for i := 0 to sl.count-1 do
    memo1.lines.add(sl.strings[i]);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.clear;
memo2.clear;
end;

procedure TForm1.Button2Click(Sender: TObject);
var s:string;
befehl: string;
ts : tstrings;
begin
 if db1.Connect2MysqlDB('localhost','root','','bla',3306,s) then
 begin

  befehl:='SELECT `news`.`ueberschrift`, `news`.`text` FROM `news`';
  ts:=tstringlist.Create;
  db1.sendcmd(befehl,true,ts);
  memo2.lines.Assign(ts);
  ts.free;

 db1.DisConnectMysqlDB(s);
 end;
end;

end.



würde mich trotzdem noch interessieren mit dem stringgrid ^^

mfG
gsmgrufti
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 22


Delphi 7 Prof, BDS2006 rof
BeitragVerfasst: Do 26.10.06 14:53 
Wie mit allen Komponenten:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var 
grid:tstringgrid;
.
.
.

begin
 grid:=tstringgrid.create(nil);
...
..
 Grid.free;
end;


(und bei uses grids nicht vergessen)
Danny W.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 296

Windows XP, WIN 2000
Delphi 2005 PE
BeitragVerfasst: Do 26.10.06 19:53 
Ok vielen dank ^^