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 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, DB, DBClient, DBCtrls, Grids, DBGrids; type TForm1 = class(TForm) DBGrid1: TDBGrid; DBNavigator1: TDBNavigator; ClientDataSet1: TClientDataSet; DataSource1: TDataSource; Button1: TButton; Button2: TButton; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Image1: TImage; Button3: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var m,m1,m2: TMemoryStream; s1,s2:int64; begin if savedialog1.Execute then begin m:=TMemoryStream.Create; m1:=TMemoryStream.Create; m2:=TMemoryStream.Create; try clientdataset1.SaveToStream(m1); image1.Picture.Bitmap.SaveToStream(m2); s1:=m1.Size; s2:=m2.Size; m.Write(s1,sizeof(s1)); m.Position:=sizeof(s1); m1.Position:=0; m.CopyFrom(m1,s1); m.Position:=m.Position+s1; m.Write(s2,sizeof(s2)); m.Position:=m.Position+sizeof(s2); m2.Position:=0; m.CopyFrom(m2,s2); m.Position:=0; m.SaveToFile(savedialog1.FileName); finally m.Free; m1.Free; m2.Free; end; end; end; procedure TForm1.Button2Click(Sender: TObject); var m,m1,m2:TMemoryStream; s1,s2:int64; begin if opendialog1.Execute then begin m:=TMemoryStream.Create; m1:=TMemoryStream.Create; m2:=TMemoryStream.Create; try m.LoadFromFile(opendialog1.FileName); clientdataset1.Active:=true; m.Position:=0; m.Read(s1,sizeof(s1)); m.Position:=sizeof(s1); m1.CopyFrom(m,s1); m1.Position:=0; clientdataset1.LoadFromStream(m1); m.Position:=m.Position+s1; m.Read(s2,sizeof(s2)); m.Position:=m.Position+sizeof(s2); m2.CopyFrom(m,s2); m2.Position:=0; image1.Picture.Bitmap.LoadFromStream(m2); finally m.Free; m1.Free; m2.Free; end; end; end; procedure TForm1.Button3Click(Sender: TObject); begin if opendialog1.Execute then begin image1.Picture.LoadFromFile(opendialog1.FileName); end; end; procedure TForm1.FormCreate(Sender: TObject); begin clientdataset1.FileName:=''; end; procedure TForm1.Button4Click(Sender: TObject); begin clientdataset1.First; while not clientdataset1.Eof do clientdataset1.Delete; image1.Picture.Bitmap.LoadFromFile('2.bmp'); end; end. |
|
|
|
|

Отчего возникает ошибка — Mismatch in da
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
|
|
есть связка — TADODataSet-TDataSetProvider-TClientDataSet, когда я вношу запись в TClientDataSet и делаю ApplyUpdates, то вылазит эта ошибка, причем данные успешно апдэйтятся. БД — MSSQL, Delphi — 6-й версии. У провайдера обрабатываю UpdateError, Событие AfterApplyUpdates наступает, там тоже код выполняется, вобщем все вроде нормально но вылеает эта ошибка. Как ее поправить? |
Bas |
|
|
Текст ошибки. |
|
Guest |
|
|
прошу прощения текст ошибки — Mismatch in datapacket |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Delphi: Базы данных
- Следующая тема
[ Script execution time: 0,0169 ] [ 16 queries used ] [ Generated: 28.01.23, 21:54 GMT ]
← →
Lavrenty ©
(2007-03-14 10:09)
[0]
Пытаюсь подключить XML-файл через ClientDataSet к DBGrid, но что-то не получается. У ClientDataSet через FieldDefs определяю поля, через контекстное меню «Create DataSet» создаю набор данных, в Fields Editor задаю поля, указываю имя файла xml, из которого брать данные, но при попытке сделать Active=true ошибка «Mismatch in datapacket?
![]()
![]()
← →
Jan
(2007-03-14 10:12)
[1]
если ты подключаешь xml из ado? Зачем тебе ClientDataSet?
![]()
![]()
← →
Lavrenty ©
(2007-03-14 10:23)
[2]
Дело в том, что необходимо отображать данные в гриде на информационном табло, а сама база на сервере. Если с ервером или с базой что-то случится, то на табло «огромными» буквами будет сообщение об ошибке, что не совсем, мягко говоря, красиво. Народ будет ходить и смотреть на всё это безобразие. Поэтому надо сделать независимым табло от базы. Оно будет читать данные из хml-файла, в который данные периодически будут сбрасываться из базы.
![]()
![]()
← →
VAleksey ©
(2007-03-14 10:24)
[3]
Удалено модератором
Примечание: По просьбе автора
![]()
![]()
← →
Jan
(2007-03-14 10:28)
[4]
> Lavrenty © (14.03.07 10:23) [2]
к сведенью, у TADODataset есть метод LoadFromFile.
![]()
![]()
← →
Lavrenty ©
(2007-03-14 10:36)
[5]
> к сведенью, у TADODataset есть метод LoadFromFile.
Похоже он требует подключения подключения к таблице, а мне это не надо — выдаёт ошибку «Missing connection …»
![]()
![]()
← →
Jan
(2007-03-14 10:59)
[6]
> Похоже он требует подключения подключения к таблице, а мне
> это не надо — выдаёт ошибку «Missing connection …»
врете
![]()
![]()
← →
Val ©
(2007-03-14 11:31)
[7]
>Lavrenty ©
если проблема только в том что вы описали(вывод на табло при ошибках сервера и т.д.), то применение хмл-файла несколько неоправданно. может стоит подумать о верной/нужной обработке исключений?
![]()
![]()
← →
Val ©
(2007-03-14 11:57)
[8]
хотя, если вы, при отсутствии коннекта с бд сегодня с утра хотите показывать вчерашние данные, то я извиняюсь, что сразу не догнал.
![]()
![]()
← →
Lavrenty ©
(2007-03-15 14:42)
[9]
> хотя, если вы, при отсутствии коннекта с бд сегодня с утра
> хотите показывать вчерашние данные, то я извиняюсь, что
> сразу не догнал.
Примерно так и есть. Попробовал так
ClientDataSet2.LoadFromFile("c:data.xml");
но получаю ошибку «Mismatch in datapacket». Подсказали попробовать с TXMLTransformProvider. Прочитал Help, ничего не понял. Может кто подскажет как же всё-таки трансформировать data.xml в нужный для ClientDataSet формат?
![]()
![]()
← →
Megabyte ©
(2007-03-15 19:18)
[10]
У тебя не тот формат .xml-файла!
Для начала тебе надо преобразовать файл в понятный формат для Датасета.
Это делается с помощью компонента ТXMLTransform.
НО, для форматирования надо задать правила форматирования. Чтобы сделать это автоматически, надо использовать утилиту xmlmapper.exe
С помощью ее создаешь правила, сохраняешь их в файл и прописываешь имя файла в свойство компонента ТXMLTransform
![]()
![]()
← →
Jan
(2007-03-16 09:41)
[11]
> У тебя не тот формат .xml-файла!
у него он от ADO:)
![]()
![]()
← →
Megabyte ©
(2007-03-16 13:01)
[12]
«Mismatch in datapacket» — у меня эту ошибку выдавало, когда я пытался обычный xml-файл использовать в CDS.
![]()
![]()
← →
Val ©
(2007-03-16 13:31)
[13]
автор — расскажи нам всем — чем создавал файл?
![]()
![]()
← →
alex_*** ©
(2007-03-16 15:44)
[14]
да сам пропарсил бы давно и залил в ADODataSet, ну или через XMLDocument, если файл не очень большой.
![]()
![]()
I have a .cds file that suggest it is TClientDataSet file. When I try to open it whit TClientDataSet in Delphi 7, when set Active to true, error «Mismatch in datapacket» has occurred. Please help me 🙁
bluish
25.6k27 gold badges119 silver badges177 bronze badges
asked Jul 26, 2012 at 12:52
4
I just downloaded that file and can confirm that it definitely isn’t valid CDS file
answered Aug 3, 2012 at 9:04
use the xml mapper tool if you have one and after mapping select all and then from the Create mrnu, DataPacket from XML
answered Sep 26, 2014 at 13:46