Get Data Table Row Bug

So I started using the Get Data Table Row utility method and it works great. I select my DataTable, input the RowName and “Break” out the Out Row. Excellent.

However, when I save, close, and reopen it doesn’t retain something and it fails to compile. It forces me to reselect the “DataTable” property even though it is already set. It doesn’t seem to retain the “Out Row” type so I have to do another “Break”.

I hope that makes sense.

Thanks,

Hi ,

I’ve attempted to reproduce what you’re seeing but I haven’t been able to get the same results yet. Could you post a screenshot of your blueprint set up?

Hi ,

We haven’t heard back from you in a few days, so we are marking this post as Resolved for tracking purposes. If you’re still experiencing this issue, please feel free to post back here with additional information.

Thanks, TJ

Hi,
I have the same problem.

I forked the Engine from Github 21. July.
I created this DataTable Interface.

#pragma once

#include "Engine/Engine.h"
#include "MyDataAsset.generated.h"

/**
 * 
 */
UCLASS()
class UMyDataAsset : public UEngine
{
	GENERATED_UCLASS_BODY()

	
	
};


USTRUCT(BlueprintType)
struct FLevelCoordinates : public FTableRowBase
{
	GENERATED_USTRUCT_BODY()

public:

	FLevelCoordinates()
		: Lvl_X(0)
		, Lvl_Y(0)
	{}

	/** X Coordinate Wall */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Default)
		int32 Lvl_X;

	/** Y Coordinate Wall */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Default)
		int32 Lvl_Y;

};

And created the blueprint which positions a wall with x,y coordinates.

Each time when I close the Editor, the line between the datatable and the break disapears. And when I start again I have to select the Datatable in the Get Data Table Row and after that I can heal the lost connection.

Hi merlin96,

Could you also post your .cpp setup so we can attempt to reproduce your issue?

Hi,
Thanks for helping.

I try to put this code “somewhere”, because I don’t no where the best place would be.

USTRUCT(BlueprintType)
struct FLevelCoordinates : public FTableRowBase
{
	GENERATED_USTRUCT_BODY()

public:

	FLevelCoordinates()
		: Lvl_X(0)
		, Lvl_Y(0)
	{}

	/** X Coordinate Wall */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Default)
		int32 Lvl_X;

	/** Y Coordinate Wall */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Default)
		int32 Lvl_Y;

};

Currently I pasted it into the generated gamemode header.
(I attached it as zip, because .h files are not allowed to upload)
This file is generated from “New project template”: Blueprint First Person C++.

I’m using

Microsoft Visual Studio Express 2013 for Windows Desktop
Version 12.0.30501.00 Update 2
Microsoft .NET Framework
Version 4.5.51641

link text

I attached the csv file too.
But I don’t think that this file is the problem But perhaps it helps for testing purposes.

link text

Thanks,
My name is Erkin :wink:
Just forgot in my first comment

Ah yes,
I tried the Unreal Editor Laucher Version too. The same issue.

11025-unreal_version.jpg

I have the same exact problem as merlin96, although I’m using stock 4.3 and VS2013 Pro. This problem makes DataTables unusable for me. I described it in some detail here:

Hi everyone,

I was able to reproduce the issue that was described in this post, and have submitted a report about the issue to our development team for further investigation. We apologize for any inconvenience this issue may cause, and hope to have it resolved soon.

Have a great day.

Just chiming in to say that I was able to repro this as well. It was indeed fixed by replacing the break node. The unfortunate thing about this bug is that one of the big reasons to use a data table is if you are driving a large number of blueprints with it, so you might end up needing to reconnect a lot of stuff each time.

The problem come from “Get Data Table Row” node. Each time, the blueprint is reloaded, that node doesn’t make the link between the “Data Table” and the “Out Row”. The “Out Row” becomes invalide and the link between “Out Row” and “Break Row” is no longer valid and is broken.
A manual update temporarily solve the problem by deleting, compiling and then re-adding the “Data Table” link.

One solution would be to change the node to an automatic update is made ​​before the test links between nodes.
(french writer… sorry ^^)

I have a solution if you are interested. I created a subclass of AActor with his own “Get Data Table” Node. Don’t forget to change table Row “FitemData” by your own. Then compile the game code and change your blueprint parent:

11518-reparent-blueprint.jpg

itembase.h:

#pragma once

#include "Inventory/InventoryManager.h"    //The file containing your Data Table Row declaration
#include "itemBase.generated.h"

UCLASS(BlueprintType)
class AitemBase : public AActor{

	GENERATED_UCLASS_BODY()

public:
	UFUNCTION(BlueprintCallable, Category = Data) FitemData getTableRow(UDataTable* dataTable, FName pName);
};

itemBase.cpp:

#include "RottenTowns.h"
#include "itemBase.h"


AitemBase::AitemBase(const class FPostConstructInitializeProperties& PCIP)
: Super(PCIP)
{
}

FitemData AitemBase::getTableRow(UDataTable* dataTable, FName pName){
	return *dataTable->FindRow<FitemData>(pName, "", false);
}

It works perfectly ans the link didn’t break anymore. Don’t forget to adapt the code for your project (change Rottentowns.h with your own project file and FitemData with your own Data Table Row).

Enjoy :wink:

Oh wow Shinje, Thanks for sharing your solution this is really handy!

You’re welcome!

Hi, I could not manage your proposal.

I created the subclass, build it, and reparent the blueprint to this class.
The line still breaks, when I close the editor and open it again.

I tried with a complete new project. Started with a content project (ego shooter) and then added a engine class for the datatable definition and then the actor class, after that I made the blueprint (and reparented it). It is still not working.

I attached the actor and datatable classes.
link text

I looked at your code and it’s good. The problem is you must replace the node “Get Data Table Row” by the new one called “Get Data Table”. They are two diferent nodes. “Get Data Table Row” still doesn’t works.

Keep me in touch if the problem persists.

Watch this:

Thanks Shinje, I used this method for now (though I look forward to the fix…or blueprint function templates).

I ended up mixing this solution with a static function helper class (derived from UBlueprintFunctionLibrary), so I didn’t need to create another class or reparent anything

Yeah its working.

1000x Thanks!!!
Great community here

But I hope that this bug will be fixed in future, even if there is a workaround.