| Autor |
Beitrag |
curtiss
      
Beiträge: 59
|
Verfasst: 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 Gausi: Topic aus VCL (Visual Component Library) verschoben am Mo 23.10.2006 um 11:48
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: 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
      
Beiträge: 22
Delphi 7 Prof, BDS2006 rof
|
Verfasst: 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.
      
Beiträge: 296
Windows XP, WIN 2000
Delphi 2005 PE
|
Verfasst: 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:
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
      
Beiträge: 22
Delphi 7 Prof, BDS2006 rof
|
Verfasst: Do 26.10.06 08:43
Beispiel:
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
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.
      
Beiträge: 296
Windows XP, WIN 2000
Delphi 2005 PE
|
Verfasst: 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
      
Beiträge: 22
Delphi 7 Prof, BDS2006 rof
|
Verfasst: Do 26.10.06 13:41
Dann machs einfach so:
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.
      
Beiträge: 296
Windows XP, WIN 2000
Delphi 2005 PE
|
Verfasst: 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!
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 public 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 := ','; sl.DelimitedText := memo2.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
      
Beiträge: 22
Delphi 7 Prof, BDS2006 rof
|
Verfasst: Do 26.10.06 14:53
Wie mit allen Komponenten:
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.
      
Beiträge: 296
Windows XP, WIN 2000
Delphi 2005 PE
|
Verfasst: Do 26.10.06 19:53
|
|
|