Töltsd dbgrid

Töltsd dbGrid

Súgó. Van dbGrid + MySQL. Van apishny projekt, amelyben a lekérdezés eredményét kell kiadni a hálóra. De ahhoz, hogy töltse ki a rács nem sikerül.
Tábla és lekérdezés nem illik - a lekérdezés eredményét rács látható vagy hiányzik, hogy át ezeket a komponenseket nem lehet megvalósítani. Stringgrid malopriyaten is, de tartották.
Súgó.

> Az eredményeket a lekérdezés rács látható vagy hiányzik

DBGrid.Visible: = Table.Active és (Table.RecordCount> 0)

Láthatóság köszönhetően, de még mindig kívánatos kézi feltöltés dbGrid „is. És még jobb, hogy éket verjenek a szalag és TAdoQuery TDataSource (ellenőrizni kell néhány beállítást, és esetleg resortirovat adatokat a kívánt kimeneti formátum)

DBGrid kézi feltöltés segítségével, amely a StringGrid, fut egy hurkot az összes rekordot, és minden rögzíti a futásteljesítmény minden területén. Szükség van az Ön számára?

mező kiadási méret állítható akár Field.OnGetText vagy DBGrid.OnDrawColumnCell

Tartson egy puffer DataSet a memóriában (pl TClientDataSet, vagy valami hasonló kbmMemTable, RxMemoryData.) Írja meg kézzel, és megmutatni, hogy mit akar egy DBGrid-e

És pontosan ki lehet tölteni az időközi adatbázisba?
Minden más opció egy nem-agy.
Mintegy resortirovki - nem mindig lehetséges, hogy egy ilyen Select, amely teljes mértékben megfelel a méret a kimeneti rács (használt MySQL 3.23), ezért szükséges, hogy átszervezi az adatokat, például emelő vonalak oszlopok. A közvetlen formában (abban az értelemben, az adatokat a sejtek) nem kell (ez könnyen elvégezhető kézi feltöltés). Ezen túlmenően, a kívánt teljes mértékben működőképes háló (azaz, normál funkcionalitását mint a változás előtt).
És mint már említettem, kézi feltöltés StringGrida - Már eltelt szakaszában (és így a megsemmisülés)

Felejtsd el az adatbázist.

> És pontosan ki lehet tölteni az időközi adatbázisba?

Ha ez egy leszármazottja TDataSet -, akkor mindazok, amelyek forgatja TDataSet

> Az resortirovki - nem mindig lehetséges, hogy hozzon létre egy Select, amely teljes mértékben megfelel a kimeneti formátum a háló (MySQL 3.23), ezért szükséges, hogy átszervezi az adatokat, például, hogy emelje fel a sorokat oszlopokat.

Lehet a futásidejű hogy megteremtse a szükséges mezőket, majd töltse ki. És válogatás a TClientDataSet és ott RxMemoryData

> A kívánatos teljesen működőképes hálózat (azaz normál funkcionalitását mint a változás előtt).

És hol ő megy el :) Vagy azt akarja szerkeszteni az adatokat az adatbázisba puffer-a, és a változások esnek a bázist? És meg lehet csinálni - de legalább a felvezető AfterPost


>> És pontosan ki lehet tölteni az időközi adatbázisba?
>
> Ha ez egy leszármazottja TDataSet -, akkor mindazok, amelyek forgat
> TDataSet

Egy csapat tud valaki mondani? Van egy pár hétig lefogadom - projekt Delphi és MySQL API, az összes kapcsolat keresztül mysql_connect segítsége nélkül BDE, ami feleslegessé teszi a bármilyen szabványos vagy harmadik fél TTable, TQuery, és mások. Az egyetlen kivétel - TAdoQuery (ODBC-illesztőprogram). És valamennyi közbenső adatbázisba, legyen TClientDataSet vagy elődje, követeli a megnyitása a töltelék vagy a TableName tulajdon, vagy adja meg a szolgáltató neve (ez utóbbit használják TADOQuery;))))). De még egy kiegészítő adatbázisba megadásakor a szolgáltató neve fog működni azokkal az adatokkal, számukra - és éppen ezek az adatok tudom kell vizsgálni, és a saját változás. És bármilyen változás nem történik meg, ha az adathalmaz zárva van (((((((
Ezért, ha bárki azt sugallják változások parancs, hogy kitöltse a mezőket adatbázisba (vagy kézi feltöltés a rács, nincs különbség) segítségével. Többé nem kell :)) semmi)) (elvégre nem az első évben feleségül, csak adatbázisok ezen a szinten nem kell dolgozni)


> Tehát, ha bárki azt sugallják, hogy töltse parancs
> Változás az adathalmaz mezők (vagy kézi feltöltés a rács,
> Nincs különbség) segítségével. Kell semmi több :)))) (elvégre
> Nem az első házas, csak adatbázisok ezen a szinten
> Nem kell dolgozni)

Mi csapat? Insert, hozzáfűzése, Szerkesztés, Post?


> És minden közbenső adatbázisba, hogy lesz egy TClientDataSet
> Vagy elődje, az igények megnyitása a töltelék vagy
> Tulajdonságok TableName, vagy adja meg a szolgáltató neve (ez utóbbi
> És használt TADOQuery

Ebben van mélyen téved, RxMemoryData alkatrész, van egy hasonló, és EhLib csomag tárolja egy sor adatot közvetlenül a memóriába, és nem igényel semmilyen szolgáltató, valamint a TClientDataSet, ha fut a helyi üzemmódot (amelyet egy fájlnevet, hogy mentse a táblázatot).

Milyen típusú buf? Szükség lehet Form1.MemTableEh1.SetFieldData (. Buf ^.)

Nem, SetFieldData buf típusú mutató. Aztán újra ellenőrizték a forrás EhLib - egyedül ő a megadott adattípus átalakítja a húr. By the way, SetFieldData a MemTable általában nem állnak rendelkezésre - húztam ki a védett nyilvános. Emellett ebből, csinálok semmit.

Akkor nem értem húr buf: = AMySQLRow [i]
Milyen típusú AMySQLRow?
Try buf: = @AMySQLRow [i] (vagy @AMySQLRow [i] [1], ha a tömb sorok).

> Akkor nem értem húr buf: = AMySQLRow [i]
AMySQLRow [i] - a sorszáma egy pointert a húr a mező értéke.
AMySQLRow - durván szólva, egy sor PChar értékeket.

"Pointer a string"?

AMySQLRow: tömb. A PString?
vagy mindegy tömb string?
Ha az utóbbi, akkor meg kell @AMySQLRow [i] [1]

AMySQLRow. tömb PChar

És látni fogjuk, ha ShowMessage (AMySQLRow [0])?

Nem tudom, nem próbálta. Tudom, hogy egy darab kódot
var buf: string;
kezdődik
# XA0; buf: = AMySQLRow [0] ^
végén;

Indítása. Akkor megérted, hogy miért kérdezem.

eljárás TForm1.FormCreate (Sender: TObject);
var p: pchar;
# XA0; s: string;
kezdődik
# XA0; s: = "1234";
# XA0; p: = @s [1];
# XA0; ShowMessage (p);
# XA0; s: = p ^;
# XA0; ShowMessage (s);
végén;

Nem egészen.
# XA0; s: = "1234";
# XA0; p: = @s [1];
# XA0; ShowMessage (p); // kiírja 1234
# XA0; ShowMessage (p ^); // kiírja 1

valamit, amit mi nem megy rulim, IMHO. Amint a fentiekben paraméterek MemTableEh1.SetFieldData?

sort - ellenőrizze, hogy az opció érdemes Project / Options / Compiler / Huge húrok, és hogy van $ irányelv H-

Hatalmas húr tartalmazza - tény. Irányelv is határozottan nem.
De a paraméterek leírása - SetFieldData (Field: TField, buf: pointer [, NativeFofmat: logikai]). Azt hiszem, igen. Pontosabban tudják holnapig - otthon a számítógép szinte nem tartoznak, és a projekt nem takin gjnjve

Aztán, mint meg kell dolgozni. Miután buf pont az adatok szerint a válaszokat. Talán az adatok nem jelennek meg helyesen?

PS. 10 perc múlva én is otthon billenő

Találtam egy hibát, és nem otthon. A forráskód MemTableEh SetFieldData eljárás, és ez a rejtett eljárás

# XA0; eljárás BufferToVar (var Adatok: Variant);

Tehát, ebben az eljárásban elhagyjuk attribútum adatok, azaz kiadások
# XA0; kezdődik
# XA0; # XA0; esetén Field.DataType a
# XA0; # XA0; # XA0; ftString, ftFixedChar, ftGuid:
# XA0; # XA0; # XA0; # XA0; adatok: = String (PChar (Buffer));

helyett
# XA0; kezdődik
# XA0; # XA0; esetén Field.DataType a
# XA0; # XA0; # XA0; ftString, ftFixedChar, ftGuid:
# XA0; # XA0; # XA0; # XA0; adatok: = String (PChar (Buffer ^));

Ilyenek a pitét.
Az egyetlen dolog, ami nem működik - AppendRecord, a séta a kertben

Kezdtem azt gyanítják, hogy a glitch, ténylegesen ehhez a komponens. A nem szabványos alkatrészek mindig fennáll az esélye futó bajba. Nos, bár a forrás.

És segítségével AppendRecord? van kertek

Kapcsolódó cikkek